我有一个大查询(在我的查询生成器中)和很多左连接。所以我得到带有评论和标签等的文章。假设我有以下 dql:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
现在假设我的数据库有 100 多篇博文,但我只想要前 10 篇,但要包含这 10 篇的所有评论及其所有标签(如果存在)。如果我使用 setMaxResults 它会限制行数。所以我可能会收到前两个帖子,但最后一个缺少一些评论或标签。所以以下不起作用。
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
使用doctrine2.2附带的几乎没有记录的分页解决方案对我来说也不是很有效,因为它太慢了,我也可以加载所有数据。
我尝试了Stackoverflow 文章中的解决方案,但即使该文章仍然缺少最佳实践,并且提出的解决方案非常缓慢。
没有关于如何做到这一点的最佳实践吗?没有人在生产模式下使用 Doctrine2.2 吗?