[英]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.