【发布时间】:2015-08-02 20:59:44
【问题描述】:
我有一个实体Joke:id(int)、body(text)、vote(int)、category(join entity)),还有另一个实体JokeVote:id(int)、anonymousUserID(int)、vote(int) .因此匿名用户可以将投票归因于每个笑话。但是当我列出笑话时,我想将它们关联起来,当前用户的笑话:
$query = $this->getEntityManager()->createQueryBuilder()
->select('j', 'c', 'jv.vote')
->from($this->getClassName(), 'j', 'j.id')
->innerJoin('j.category', 'c')
->leftJoin('MyBundle:JokeVote', 'jv', 'WITH', 'jv.joke = j.id AND jv.anonymousUserID = :anonymousUser')
->setParameter('anonymousUser', 3);
结果:
array()
0 => array(0 => array('id' => 2, 'body' => ..., 'vote' => null, category => ...), 'vote' => 1),
1 => array(0 => array('id' => 6, 'body' => ..., 'vote' => null, category => ...), 'vote' => -1),
2 => array(0 => array('id' => 4, 'body' => ..., 'vote' => null, category => ...), 'vote' => 1),
)
通过这样做,jv.vote 值不会替换 jv.vote 值。我愿意:
array(
0 => array('id' => 2, 'body' => ..., 'vote' => 1, category => ...),
1 => array('id' => 6, 'body' => ..., 'vote' => -1, category => ...),
2 => array('id' => 4, 'body' => ..., 'vote' => 1, category => ...),
)
如何使用 createQueryBuilder 而不使用 rawSQL 来做到这一点?
【问题讨论】:
标签: symfony doctrine dql query-builder