Php 使用DQL和Symfony2创建QueryBuilder leftJoin

Php 使用DQL和Symfony2创建QueryBuilder leftJoin,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,这个代码不起作用。有人能帮我吗?代码是: class ResultRepository extends EntityRepository { public function findAllByUserResultVote($id_vote) { $query = $this->createQueryBuilder('r') ->leftJoin('r.user' , 'u') ->leftJoin(

这个代码不起作用。有人能帮我吗?代码是:

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();
     }
}
我有一个实体用户、答案、投票、结果

我有四张桌子: 用户:主id,名称。。。 投票:身份证初选,问题。。。 回答:id主要,idVote,回答。。。 结果:*id*primary,idUser id 您不必手动编写联接条件。这是ORM的责任。 在where子句中,应该使用投票对象而不是其ID


我刚刚测试过,不断出错。为什么我应该在where子句中使用投票对象而不是它的ID?r、 idVote表格结果是一个id,可能有很多结果。$id_投票是唯一的表格投票。什么样的错误?在处理对象模型而不是数据库模型时,应该使用对象而不是它们的属性。使用对象将使您的代码更详细,更易于维护。我必须使用实体关系/关联??您只需将整个对象放置在关联比较中即可。r.vote=:vote.addSelect将帮助您解决此问题。花些时间阅读文档:。DQL与SQL不同,在理解差异之前,您将浪费大量时间。
$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();