正如标题所示,我的 DQL 请求遇到了问题。
这是我的第一行,这似乎不是错误的核心:
$qb = $this
->createQueryBuilder('p')
->leftJoin('p.localisation', 'loc')
->leftJoin('p.advert', 'a')
->leftJoin('a.accommodationStyle', 'aS')
->leftJoin('a.accommodationChoice', 'aC')
->where('loc.lat < :maxLat')
->setParameter('maxLat', $maxLat)
->andWhere('loc.lat > :minLat')
->setParameter('minLat', $minLat)
->andWhere('loc.lng < :maxLng')
->setParameter('maxLng', $maxLng)
->andWhere('loc.lng > :minLng')
->setParameter('minLng', $minLng)
;
问题就在这里:
$orX = $qb->expr()->orX();
$orX->add('aS.name = :house')
->add('aS.name = :flat')
->add('aS.name = :villa')
->add('aS.name = :bungalow')
;
$qb->andWhere($orX)
->setParameters(
array(
'house' => 'House',
'flat' => 'Flat',
'villa' => 'Villa',
'bungalow' => 'Bungalow'
)
)
;
我提供我的实体碎片:
广告包含以下行:
/**
* @ORM'ManyToOne(targetEntity="MR'PlatformBundle'Entity'AccommodationChoice", inversedBy="adverts", cascade={"persist","remove"})
* @ORM'JoinColumn(nullable=true)
*/
private $accommodationChoice;
/**
* @ORM'ManyToOne(targetEntity="MR'PlatformBundle'Entity'AccommodationStyle", inversedBy="adverts", cascade={"persist","remove"})
* @ORM'JoinColumn(nullable=true)
*/
private $accommodationStyle;
住宿风格,这个:
/**
* @ORM'OneToMany(targetEntity="MR'PlatformBundle'Entity'Advert", mappedBy="accommodationStyle")
*/
private $adverts;
住宿选择,这个:
/**
* @ORM'OneToMany(targetEntity="MR'PlatformBundle'Entity'Advert", mappedBy="accommodationChoice")
*/
private $adverts;
和人,这个另一个:
/**
* @ORM'OneToOne(targetEntity="MR'PlatformBundle'Entity'Advert", inversedBy="author", cascade={"persist","remove"})
* @ORM'JoinColumn(nullable=true)
*/
private $advert;
我浏览了有关该主题的现有帖子,但似乎没有人为这种情况提供帮助,提前感谢您的一些帮助(将不胜感激)!
不能使用 aS
作为别名,因为它是保留字 ( AS
)。只需选择另一个。