我可以在DQL中使用“ON”关键字,还是需要使用Native Query?

时间:2012-01-05 19:40:18

标签: doctrine-orm

Post和PostVote之间有一个oneToMany关系。我希望能够检索帖子以及特定用户如何投票。在DQL中,我想检索Post和相关的PostVote实体,但只有一个user_id是例如5.

我似乎无法像这样使用ON sql关键字:

->createQuery('SELECT p, pv FROM Post p LEFT JOIN p.postvotes ON pv.user = :userid WHERE p.id = :postid')

如果我使用WHERE过滤掉结果,它会产生问题并且不会显示结果,除非至少存在一个postvote对象:

->createQuery('SELECT p, pv FROM Post p LEFT JOIN p.postvotes WHERE p.id = :postid' AND pv.user = :userid)

Native Query是我实现这一目标的唯一方法吗?

1 个答案:

答案 0 :(得分:13)

您必须在DQL中使用WITH关键字来完成此任务:

SELECT p, pv FROM Post p LEFT JOIN p.postvotes WITH pv.user = :userid WHERE p.id = :postid