如何分页Doctrine2结果

如何分页Doctrine2结果,doctrine,pager,Doctrine,Pager,我在Doctrine2中找不到Doctrine2中的Doctrine_Pager,我真的需要一种方法来分页我的查询结果。有没有办法使用其他寻呼机(Pear、Zend)?如果解决方案可用,请发布一些示例代码。谷歌没有帮助我,所以希望大家会:)我为Doctrine2编写了这个扩展,其中包含一个强大的寻呼机: 不过需要注意的是,Query#setMaxResults/Query#setFirstResult涵盖了分页的大部分基本需求。有一个很好的第三种解决方案: 我发现它非常有用正如Maksim所提到

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

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


不过需要注意的是,Query#setMaxResults/Query#setFirstResult涵盖了分页的大部分基本需求。

有一个很好的第三种解决方案:


我发现它非常有用

正如Maksim所提到的,PagerFanta是推荐的。但是,至少还应该提到另一个分页包:


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

在原则2.2中,有一个paginator帮助类:

非常容易使用:)


代码看起来真的很好,迫不及待地想尝试一下,thanks@timdev,您能否给出一个示例代码,我们如何使用Zend_Paginator和DoctrineExtensions\Paginate\PaginationAdapter或DoctrineExtensions\Paginate\Paginate???
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";
}