8

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

4

5 回答 5

6

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

http://github.com/beberlei/DoctrineExtensions

于 2010-08-19T12:58:06.513 回答
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";
}
于 2012-09-14T10:01:36.193 回答
1

推荐使用 Maksim 提到的 PagerFanta。但是,至少应该提到另一个分页包:http: //symfony2bundles.org/knplabs/KnpPaginatorBundle

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

于 2011-09-04T23:03:09.617 回答
0

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

于 2010-09-16T16:47:33.250 回答
-1

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

我发现它非常有用

于 2011-07-14T14:25:47.857 回答