2016-07-07 15 views
0

Ich stieß auf ein Problem mit meinen DQL-Anfragen, wie der Titel vermuten lässt.Syntax Fehler Zeile 0, Spalte 349: Fehler: Erwartetes Literal, bekam 'aS'

Hier sind meine ersten Zeilen, die den Kern des Fehlers zu sein scheinen nicht:

$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) 
    ; 

Das Problem ist hier:

  $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' 
        ) 
       ) 
      ; 

biete ich Fetzen meiner Entitäten:

Anzeige enthält die folgenden Zeilen:

/** 
* @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, dieses:

/** 
* @ORM\OneToMany(targetEntity="MR\PlatformBundle\Entity\Advert", mappedBy="accommodationStyle") 
*/ 
private $adverts; 

AccommodationChoice, dieses:

/** 
* @ORM\OneToMany(targetEntity="MR\PlatformBundle\Entity\Advert", mappedBy="accommodationChoice") 
*/ 
private $adverts; 

und Person, das andere:

/** 
* @ORM\OneToOne(targetEntity="MR\PlatformBundle\Entity\Advert", inversedBy="author", cascade={"persist","remove"}) 
* @ORM\JoinColumn(nullable=true) 
*/ 
private $advert; 

ich die vorhandenen Beiträge zu diesem Thema untersucht, aber niemand schien für diesen Fall zu helfen, danke im Voraus für einige Hilfe (würde sehr geschätzt werden)!

+0

Ich korrigierte Villa in: Villa, aber das war nur ein Fehler während meines Schreibens dieser Post –

Antwort

2

Sie können aS nicht als Alias ​​verwenden, da es sich um ein reserviertes Wort handelt (AS). Wähle einfach einen anderen.

+0

Wunderbar, so einfach. Danke trincot. Es ist wichtig, dies im Hinterkopf zu behalten. –