Php 不限制结果的原则DQL关联联接

Php 不限制结果的原则DQL关联联接,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有三个实体: 问题: 身份证 问题: 唱诗班成员(x-1和唱诗班成员) 唱诗班 身份证 名字 选项(带选项值的1-x) 选择值 身份证 价值观 每个“问题”可能有也可能没有附加的“唱诗班成员”。每个选项列表可能会附加许多“选项值”。问题数据库非常庞大,我们在每个选择列表中都有很多选择,网站速度明显放缓 要优化我的数据库查询,最好对所有问题进行一次查询,并在结果中包含所有需要的选项列表及其选项,这样就不需要进行更多的查询 选择q、cl、cc 来自问题q 加入q.choicelist

我有三个实体:

问题:
  • 身份证
  • 问题:
  • 唱诗班成员(x-1和唱诗班成员)
唱诗班
  • 身份证
  • 名字
  • 选项(带选项值的1-x)
选择值
  • 身份证
  • 价值观
每个“问题”可能有也可能没有附加的“唱诗班成员”。每个选项列表可能会附加许多“选项值”。问题数据库非常庞大,我们在每个选择列表中都有很多选择,网站速度明显放缓

要优化我的数据库查询,最好对所有问题进行一次查询,并在结果中包含所有需要的选项列表及其选项,这样就不需要进行更多的查询

选择q、cl、cc 来自问题q 加入q.choicelist cl 加入cl.cc

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


我想知道如何调整此DQL,以便返回所有问题,如果问题与唱诗班成员相关,则也应返回这些问题。

您需要执行左连接:

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

你试过什么?我试过问题里面的问题