繁体   English   中英

如何使用ZF2和Doctrine创建分页?

[英]How to create pagination using ZF2 and Doctrine?

我正在尝试向我的简单网站添加分页。 我正在使用Zf2和Doctrine2 orm。

Doctrine2引入了自己的2.2版分页器。 您可以在此处找到示例。 此示例的代码:

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, $fetchJoinCollection = true);

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

链接页面上只有一个示例。 在此示例中,显示了如何使用DQL创建分页器。 我没有使用DQL,而是使用对象管理器获取数据(这种代码有N部分代码)。

我正在使用另一种方法来处理数据库。 我正在使用这样的东西:

// $this->objectManager is being set in __construct

$news = $this->objectManager                     
    ->getRepository('\News\Entity\Item')         
    ->findBy($options, array('created'=>'DESC'));

$items = array();                           
foreach ($news as $item) {                  
    $items[] = $item->getArrayCopy();       
}                                           
return $items;  

如示例中所示,有什么方法可以不使用DQL进行分页吗? 是否可以在我的方法中增加分页?

这样的东西。

 class Doctor extends EntityRepository
       { 
        public function getPagedDoctor($offset = 0, $limit = 10)
            {
                $em = $this->getEntityManager();
                $qb = $em->createQueryBuilder();

                $qb->select('d')
                    ->from('\Application\Entity\Doctor', 'd')
                    ->orderBy('d.fullName')
                    ->setMaxResults($limit)
                    ->setFirstResult($offset);

                $query = $qb->getQuery();
                $paginator = new Paginator( $query );

                return $paginator;
            }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM