2016-09-24 1 views
1

Wenn ich dies tun:createQueryBuilder mit Join in Lehre

 ->select('a') 
     ->from('AppBundle:Accomodation', 'a') 
     ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id')) 
     ->getQuery()->getResult(); 

alle Felder in Accomodation ausgewählt sind. Aber wenn ich diese ‚ap‘ auf das Auswahl hinzufügen, wie unten, ist es nicht die Unterbringungs Felder auswählen:

 ->select('a', 'ap') 
     ->from('AppBundle:Accomodation', 'a') 
     ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id')) 
     ->getQuery()->getResult(); 

Die Beziehung zwischen den Entitäten. Dies ist Unterkunft: /**

* @ORM\OneToMany(targetEntity="AccomodationRoom", mappedBy="accomodation") 
*/ 
private $rooms; 

Und das ist AccomodationRoom:

/** 
* @ORM\ManyToOne(targetEntity="Accomodation", inversedBy="rooms") 
* @ORM\JoinColumn(name="accomodation_id", referencedColumnName="id") 
*/ 
private $accomodation; 

Bitte, eine Idee?

+0

Können Sie Ihre Accomodation- und AccomodationRoom-Entitäten anzeigen? Sie müssen Beziehungen zwischen ihnen angeben, so dass Sie Join :: WITH nicht benötigen. – jaro1989

+1

Ich aktualisierte mit den Anmerkungen info. Jede Hilfe ist willkommen @ jaro1989 – jmunozco

Antwort

2

Sie müssen select Unterkunft und UnterkunftZimmer.

->select('a', 'ap') 
    ->from('AppBundle:Accomodation', 'a') 
    ->innerJoin('a.rooms', 'ap') 
    ->getQuery()->getResult(); 
+0

Es wirft diesen Fehler: Warnung: Fehlende Argument 2 für Doctrine \ ORM \ QueryBuilder :: innerJoin(), in/src/AppBundle/Repository/AccomodationRepository.php in Zeile 28 aufgerufen und definiert – jmunozco

+0

Vielen Dank für Ihre die Geduld. Nun wird folgendes geworfen: Fehler: Expected IdentificationVariable | Skalarausdruck | Aggregatausdruck | Funktionsdeklaration | PartialObjectExpression | "(" Unterselektion ") | CaseExpression, bekam 'VON'. Ich bin ein wenig verloren, ich habe viele Beispiele gesehen, aber in meinem Fall funktioniert es nicht – jmunozco

+2

Ah! Ich denke jetzt, ich weiß, was los ist: Sie brauchen -> wählen ('a', 'ap') '. Ich denke, Sie verwenden den QueryBuilder ohne Repository, oder? –