【发布时间】:2016-02-16 07:47:36
【问题描述】:
我在 Symfony2 项目中使用 Doctrine2,我正在尝试优化查询和延迟加载。
我有两个实体 Parent 和 Child。
现在,如果在我的控制器中检索特定的 Parent 并将其传递给视图(树枝),一切正常,但是当我想显示与 Child 相关的数据时,Doctrine2 会进行另一个查询。
我尝试创建自己的DQL 以仅在一个查询中获取所有信息(特定的Parent 及其所有Childs。如果Parent 至少有一个@987654330,则一切正常@, 但是如果没有Child我得到一个空结果。
这是我的DQL:
$dql = ' SELECT p, c
FROM AppBundle:Parent p
JOIN p.childs c
WHERE p.id = :parentId
AND c.state = :state';
解决方案:
$dql = 'SELECT p, c
FROM AppBundle:Parent p
LEFT JOIN p.childs c
WHERE p.id = :parentId
AND (c.state = :state' or c.state is null);
【问题讨论】:
-
c.state = :state 如果没有孩子,总是会失败。因此没有记录。
-
你是对的!谢谢!
-
请不要在标题和问题的答案中添加SOLVED。您应该接受任何对您有帮助的答案,看起来您从 sagi 复制粘贴了答案。见How does accepting an answer work?。
-
对不起!我不知道!谢谢!我应该删除标题中的解决方案吗?雷加萨
标签: php sql symfony doctrine-orm dql