相关疑难解决方法(0)

教条2:限制左联/分页 - 最佳实践

我有一个大查询(在我的查询构建器中)和很多左连接.所以我得到他们的评论和标签等文章.假设我有以下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

7
推荐指数
1
解决办法
5761
查看次数

学说2和zend paginator

我想在zend_paginator中使用doctrine

这里有一些示例查询:

$ allArticleObj = $ this - > _ em-> getRepository('Articles'); $ qb = $ this - > _ em-> createQueryBuilder();

    $qb->add('select', 'a')
            ->add('from', 'Articles a')
            ->setFirstResult(0)
            ->setMaxResults(5);
Run Code Online (Sandbox Code Playgroud)

是否有任何示例代码显示我们可以为doctrine 2查询构建器编写zend_paginator适配器?

php pagination zend-framework zend-paginator doctrine-orm

6
推荐指数
2
解决办法
4629
查看次数