我的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;
AccommodationStyle,这一个:
/**
* @ORM\OneToMany(targetEntity="MR\PlatformBundle\Entity\Advert", mappedBy="accommodationStyle")
*/
private $adverts;
AccommodationChoice,这一个:
/**
* @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;
我探讨了有关该主题的现有帖子,但似乎没有人为此案提供帮助,在此先感谢一些帮助(非常感谢)!
答案 0 :(得分:2)
您不能将aS
用作别名,因为它是保留字(AS
)。只需选择另一个。