例如:我有Articles
和Comments
。
如何使用单个DQL查询仅选择10篇热门文章和所有评论?
这样做的:
SELECT A, C
FROM Article A
LEFT JOIN A.comments C
和setMaxResults(10)
不仅限制文章,还限制文章+评论。因此,我将得到,例如:第一篇文章和第7条评论,第二篇文章和3条评论。
但我希望收到所有10篇第一篇文章和所有评论。
在纯SQL查询中,它将是:
SELECT * FROM (
SELECT * FROM articles
LIMIT 10
) AS A
LEFT JOIN comments C ON C.article_id = A.id
Doctrine可以吗?或者我是否需要使用本机查询?
谢谢!
答案 0 :(得分:0)
我无法找到这个问题的解决方案,所以我决定改变策略。也许有人会发现它在他的情况下很有用。
我决定将此查询分成两部分。因此,我使用一个查询为有限的根实体子集选择ID,另一个通过将检索到的ID指定为条件来实际获取整个树。
示例:
SELECT A.id
FROM Article A
LIMIT 10
SELECT A, C
FROM Article A
LEFT JOIN A.comments C
WHERE A.id IN (4, 8, 15, 16, 23, 42, ...)