web-dev-qa-db-ja.com

doctrine 2クエリビルダーと結合テーブル

ホームページで各投稿のすべてのコメントを取得しようとしています

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

しかし、私はこのエラーを取得しています

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

PS:マッピングは正しいです。なぜなら、ページの記事とそのコメントを見ることができるからです。

19
kosaidpo

それでも問題が解決しない場合は、Doctrine 2.1ドキュメントの例にある構文を使用したクエリを使用します。

私はあなたのクエリがカスタムリポジトリメソッドにあり、「a」は「Article」の略語だと仮定しています。

$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;
37
cantera