语法错误行 0,列 349:错误:预期文本,得到“aS”


Syntax Error line 0, col 349: Error: Expected Literal, got 'aS'

正如标题所示,我的 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 )。只需选择另一个。

相关文章: