【发布时间】:2012-05-28 22:19:07
【问题描述】:
我有一个大查询(在我的查询生成器中)和很多左连接。所以我得到带有他们的 cmets 和标签等的文章。 假设我有以下 dql:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
现在假设我的数据库有 100 多篇博文,但我只想要前 10 篇,但要包含这 10 篇的所有 cmets 及其所有标签(如果存在)。 如果我使用 setMaxResults 它会限制行数。所以我可能会得到前两个帖子,但最后一个缺少一些它的 cmets 或标签。所以followin不起作用。
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
使用几乎没有文档记录的 Pagination 随教义 2.2 提供的解决方案对我来说也不是很有效,因为它太慢了,我也可以加载所有数据。
我尝试了 Stackoverflow Article 中的解决方案,但即使是那篇文章仍然缺少最佳实践,并且提供的解决方案非常缓慢。
没有关于如何做到这一点的最佳做法吗? 没有人在生产模式下使用 Doctrine2.2 吗?
【问题讨论】:
-
请将您拥有的代码添加到您的问题中,甚至可以使用示例结果来显示您想要什么以及您得到什么。
标签: pagination doctrine-orm subquery database-performance query-builder