Doctrine orm 我可以用“吗?”;关于;DQL中的关键字,还是我需要使用本机查询?

Doctrine orm 我可以用“吗?”;关于;DQL中的关键字,还是我需要使用本机查询?,doctrine-orm,Doctrine Orm,在投票后和投票后之间,我有一种单一的关系。我想能够检索一个帖子,以及一个特定的用户是如何投票的。在DQL中,我想检索Post和相关的PostVote实体,但只有一个实体的用户id是例如5 我似乎无法在sql上使用这样的关键字: ->createQuery('SELECT p, pv FROM Post p LEFT JOIN p.postvotes ON pv.user = :userid WHERE p.id = :postid') 如果我使用WHERE筛选结果,则会产生问题,除非至少

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

我似乎无法在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)

本机查询是实现这一点的唯一方法吗?

您必须在DQL中使用WITH关键字才能实现这一点:

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

6年后,这救了我的命。谢谢。同样的故事兄弟(8年后):)Doctrine2文档链接