如何分页Doctrine2的结果

时间:2010-08-16 19:52:02

标签: doctrine pager

我无法在Doctrine2中找到Doctrine_Pager,真的需要一种方法来查询我的查询结果。有没有办法使用一些替代寻呼机(Pear,Zend)?如果解决方案可用,请发布一些示例代码。谷歌没有帮助我,所以希望人们会:)

5 个答案:

答案 0 :(得分:6)

我为Doctrine2编写了这个扩展,其中包含一个强大的寻呼机:

http://github.com/beberlei/DoctrineExtensions

答案 1 :(得分:2)

在Doctrine 2.2中,有一个Paginator助手类:http://docs.doctrine-project.org/en/latest/tutorials/pagination.html

非常好用:)

use Doctrine\ORM\Tools\Pagination\Paginator;

$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c";
//build the query for the page you want to display
$query = $entityManager->createQuery($dql)
                       ->setFirstResult(0)
                       ->setMaxResults(10);

$paginator = new Paginator($query, $fetchJoinCollection = true);

$c = count($paginator); //automatically makes another query and returns the total number of elements.

//iterating over the paginator iterates over the current page
foreach ($paginator as $post) {
    echo $post->getHeadline() . "\n";
}

答案 2 :(得分:1)

建议,如马克西姆所述,PagerFanta。但是,还有一个至少应该提到的其他分页包:http://symfony2bundles.org/knplabs/KnpPaginatorBundle

与PagerFanta不同,KnpPaginatorBundle目前需要将zend paginator包作为依赖项。

答案 3 :(得分:0)

尽管如此,Query#setMaxResults / Query#setFirstResult涵盖了分页的大部分基本需求。

答案 4 :(得分:-1)

有一个很好的第三个解决方案:https://github.com/whiteoctober/Pagerfanta

我发现它非常有用