Могу ли я использовать ключевое слово «ON» в DQL или мне нужно использовать собственный запрос?

У меня есть отношение oneToMany между Post и PostVote. Я хотел бы иметь возможность получать сообщение и то, как за него проголосовал конкретный пользователь. В DQL я хотел бы получить сообщение и связанный объект 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)

Является ли собственный запрос единственным способом добиться этого?

6
задан DavidW 5 January 2012 в 19:52
поделиться