2011-11-06 9 views
16

Próbuję uzyskać wszystkie komentarze dla każdego postu na stronie głównejdoctrine 2 kreator zapytań i łączenia tabel

return 
$this->createQueryBuilder('c') 
->select('c') 
->from('Sdz\BlogBundle\Entity\Commentaire' ,'c')     
->leftJoin('a.comments' ,'c')->getQuery()->getResult() ; 

ale dostaję ten błąd

[Semantical Error] line 0, col 58 near '.comments c,': Error: 
Identification Variable a used in join path expression but was not defined before. 

PS: mapowanie jest poprawny, ponieważ widzę artykuł z jego komentarzami.

+1

okazało się jak faceci tutaj 'return $ this-> createQueryBuilder ('a') -> wybierz ('a, c') -> leftJoin ('a.comments', 'c ') -> getQuery() -> getResult(); ' – kosaidpo

+0

czy możesz sprawdzić http://stackoverflow.com/questions/17115165/doctrine-inner-left-join-two-tables Próbowałem Ci rozwiązania, ale jego nie działa na mnie .. – TomPHP

Odpowiedz

36

Jeśli nadal masz problemy, oto twoje zapytanie, używając składni znalezionej w przykładach w dokumentacji Doctrine 2.1.

Zakładam, że twoje zapytanie znajduje się w niestandardowej metodzie repozytorium, a "a" to skrót od "Artykuł".

$em = $this->getEntityManager(); 
$qb = $em->createQueryBuilder(); 

$qb->select(array('a', 'c')) 
    ->from('Sdz\BlogBundle\Entity\Article', 'a') 
    ->leftJoin('a.comments', 'c'); 

$query = $qb->getQuery(); 
$results = $query->getResult(); 

return $results; 
+0

w odniesieniu do tego pytania próbuję rozwiązać mój problem, ale mam problemy. http://stackoverflow.com/questions/17115165/doctrine-inner-left-join-two-tables – TomPHP