2017-03-17 4 views
0

symfonyの3プロジェクトにおける教義と最適化されたクエリのために多対多の関係ですべてのレコードを取得し、私はこのような複数のエンティティを選択します:教義DQLクエリが

エンティティ「E」oneToMany関係と「」持っているを持っています私の関係の一つが空の場合も、「AU」(「AU」は、多対多の関係でリンクされたテーブルとなっているはずですが、私はそれでいくつかの余分なフィールドを必要に応じて)

$qb = $this->createQueryBuilder('e'); 

    return $qb->select('e, d, du') 
      ->leftJoin('e.demos', 'd') 
      ->leftJoin('d.demo_user', 'du') 
      ->getQuery() 
      ->getResult(); 

とOneToManyの関係は(ないdemo_userはありません例えば、私のエンティティeと関連するものは結果として送られません。デモやdemo_userが関連していなくても、すべての結果を得たいです。

は、クエリで3 Entitを接続するためにあなたの助け;-)

答えて

0

例をありがとう: クエリでリンクテーブルをマスト

return $this->createQueryBuilder('e') 
    // if skip "->select ..." then resive all collumn form enities: E, AU, DU 
    ->select(
     'e.id as id', 
     'e.taskName as taskName', 
      'e.dueDate as dueDate', 
      'au.isOwn as isOwn', 
      'du.fild2 as fild2' 
     ) 
     ->leftJoin('YourBundle:EntityAU', 'au', 'WITH', 'au.idTask = e.id') 
     ->leftJoin('YourBundle:EntityDU', 'du', 'WITH', 'ad.fild1 = au.id') 
     ->where('au.idParent = :par1') 
     ->setParameter('par1', $varId) 
     ->orderBy('t.parentString', 'ASC') 
     ->getQuery() 
     ->getResult();