题
我在Doctrine2中找不到Doctrine_pager,确实需要一种方法来分页我的查询结果。有没有一种方法可以使用一些其他寻呼机(梨,Zend)?如果有解决方案,请还发布一些示例代码。 Google没有帮助我,所以希望人们能:)
解决方案
我为Doctrine2写了此扩展名,其中包含一个强大的寻呼机:
其他提示
在学说2.2中,有一个吊架助手类: 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";
}
如Maksim所述,Pagerfanta推荐。但是,还有另一个分页捆绑包至少应该提及: http://symfony2bundles.org/knplabs/knppaginatorbundle
与Pagerfanta不同,KnppaginatorBundle当前需要Zend Paginator包作为依赖性。
就像注意的那样,查询#setMaxResults / Query#setFirstresult涵盖了分页的大多数基本需求。
有一个很好的第三个解决方案: https://github.com/whiteoctober/pagerfanta
我发现它非常有用
不隶属于 StackOverflow