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();