2012-04-11 55 views
6

从版本2.2开始学说有Paginator。只有一个文档中的例子:Doctrine2 Paginator

<?php 
use Doctrine\ORM\Tools\Pagination\Paginator; 

$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c"; 
$query = $entityManager->createQuery($dql) 
         ->setFirstResult(0) 
         ->setMaxResults(100); 

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

$c = count($paginator); 
foreach ($paginator as $post) { 
    echo $post->getHeadline() . "\n"; 
} 

有这一类毫无新意,因为文档中描述的整个过程可以用$query->getResult()完成。

我知道有一些关于分页的软件包,但我不想为这些微不足道的问题安装第三方软件包。另一方面,我找不到任何关于教条2的分页。班上应该有一些有用的方法。我可以在哪里找到它们?如果没有,那么全班的重点是什么?

回答

3

学说的分页器不是Symfony意识到的 - 它是低层次的和学说特定的。另一方面,如果安装a 3rd party bundle,则会为Doctrine ORM & ODM,Propel,普通数组等等获得分页适配器。您还将获得Symfony集成和视图助手。我至少使用了WhiteOctoberPagerfantaBundle来完成所有这些。

所以,除非你只是遵守Doctrine,否则我建议你重新考虑你对第三方软件包的立场。

+4

这并没有回答这个问题,因为在手头的问题中没有Symfony特有的问题。相反,只有一个纯理论解决方案会更好。我有完全相同的问题,也想知道Paginator类的重点。 – 2014-01-15 13:39:34

+0

AFAICT,Paginator类仅用于解决尝试在JOINed DQL查询上使用setMaxResults时发生的问题。糟糕的设计给我,但显然我知道什么。 >< – 2014-09-07 04:28:27