限制Doctrine查询中的根实体数,但允许任意数量的连接实体

时间:2014-04-10 12:17:29

标签: mysql sql doctrine-orm dql

例如:我有ArticlesComments

如何使用单个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可以吗?或者我是否需要使用本机查询?

谢谢!

1 个答案:

答案 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, ...)