createQueryBuilder leftJoin使用Doctrine DQL和Symfony2

时间:2014-03-01 12:07:11

标签: php symfony doctrine-orm doctrine

此代码不起作用。有谁能够帮我?代码是:

class ResultRepository extends EntityRepository
{
     public function findAllByUserResultVote($id_vote)
     {
        $query = $this->createQueryBuilder('r')
           ->leftJoin('r.user' , 'u')
           ->leftJoin('r.answer' , 'a')
           ->leftJoin('r.vote' , 'v')

           //Where idVote (Table result) == id (Table vote)
           ->where('r.idVote = :idVote')
           ->setParameter('idVote', $id_vote)
           ->getQuery();
        return $query->getResult();
     }
}

我有一个实体用户,答案,投票,结果。

我有4张桌子:
用户: id (主要),名称,...
投票: id (主要),问题,...
答案: id (主要),idVote,回答 ...
结果 * id *(主要), idUser (id< -table user), idVote (id < -table vote), idAnswer (id< -table answer),...

结果只包含id,但我需要返回例如:
而不是: 1,6,5,3 这个: 1,u.name,v.question,a.answer

1 个答案:

答案 0 :(得分:0)

  1. 您不必手动编写连接条件。这是ORM的责任。
  2. 您应该在Vote子句中使用where对象而不是其ID。

    $vote = ...;
    
    $query = $this->createQueryBuilder('r')
       ->leftJoin('r.user', 'u')
       ->leftJoin('r.answer', 'a')
       ->leftJoin('r.vote', 'v')
       ->where('r.vote = :vote')
       ->setParameter('vote', $vote)
       ->getQuery();