条令DQL关联加入,不限制结果


Doctrine DQL association Join without limiting results

我有三个实体:

问题

  • id
  • 问题
  • choicelist(带choicelist的x-1)

选项列表

  • id
  • 名称
  • 选项(带选项值的1-x)

ChoiceValue

  • id
  • 价值

每个"问题"可能有也可能没有附带的"选项表"。每个选项列表可能都附有许多"选项值"。问题数据库庞大,每个选项列表中都有很多选项,网站速度明显放缓。

为了优化我的数据库查询,对所有问题进行一次查询是有意义的,并且在结果中包括了所有需要的选项列表和他们的选择,所以不需要进行更多的查询。

选择q、cl、ccFROM问题q加入q.choicelist-cl加入cl.choices cc

如果我这样做,我的印象是只有有选择列表的问题才会被加入(所以,如果关联不是空的),这样,如果问题没有选择列表,这个查询就不会返回它。

我想知道如何调整这个DQL,以便返回所有问题,如果问题有相关的选择者,那么也应该返回。

您需要执行LEFT JOIN:

SELECT q, cl, cc FROM Question q LEFT JOIN q.choicelist cl JOIN cl.choices cc