我有一个大查询(在我的查询构建器中)和很多左连接.所以我得到他们的评论和标签等文章.假设我有以下dql:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
Run Code Online (Sandbox Code Playgroud)
现在让我们说我的数据库有超过100个博客帖子,但我只想要前10个,但是包含那些10及其所有标签的所有评论,如果它们存在的话.如果我使用setMaxResults它限制行.所以我可能得到前两个帖子,但最后一个帖子缺少一些评论或标签.所以跟随不起作用.
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
Run Code Online (Sandbox Code Playgroud)
使用doctrine2.2附带的几乎没有文件记录的分页解决方案对我来说并不是真的有效,因为它太慢了,我也可以加载所有数据.
我在Stackoverflow文章中尝试了解决方案,但即使该文章仍然缺少最佳实践,所提出的解决方案也非常慢.
对于如何做到这一点,是否有最佳实践?没有人在生产模式下使用Doctrine2.2吗?
pagination subquery query-builder database-performance doctrine-orm
我想在zend_paginator中使用doctrine
这里有一些示例查询:
$ allArticleObj = $ this - > _ em-> getRepository('Articles'); $ qb = $ this - > _ em-> createQueryBuilder();
Run Code Online (Sandbox Code Playgroud)$qb->add('select', 'a') ->add('from', 'Articles a') ->setFirstResult(0) ->setMaxResults(5);
是否有任何示例代码显示我们可以为doctrine 2查询构建器编写zend_paginator适配器?