Zf2 分页提取所有记录



我已经实现了 zf2 分页器。但是现在随着数据的增加,我意识到它首先获取所有记录,然后进行分页,这需要更多时间。直到记录超过 1k,我才意识到速度问题。

分页器真的是这样工作的,还是我的代码中缺少一些东西?

$photos = $em->getRepository('UserEntityMyEntity')->findBy(array('id' => $main_id, 'status' => '1', 'is_primary' => '1'));
/** Create Paginator * */
$paginator = new ZendPaginatorPaginator(new
                ZendPaginatorAdapterArrayAdapter($photos)
             );
if (isset($data['pg_id'])) {
      $paginator->setCurrentPageNumber($data['pg_id']);
} else {
      $paginator->setCurrentPageNumber(1);
}
$paginator->setDefaultItemCountPerPage(25);

正如@foozy评论中提到的,Doctrine为此目的为ZF2提供了分页器适配器。 您可以直接使用DoctrineModule中的可选适配器或 DoctrineORMModule 中的 DoctrinePaginator 类。 后者没有自己的文档,但Loft Digital的这篇博客文章很好地解释了它:

use DoctrineORMModulePaginatorAdapterDoctrinePaginator as DoctrineAdapter;
use DoctrineORMToolsPaginationPaginator as ORMPaginator;
use ZendPaginatorPaginator;
// .......
$entityManager = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
$repository = $entityManager->getRepository('AdminEntitySystemUser');
$adapter = new DoctrineAdapter(new ORMPaginator($repository->createQueryBuilder('user')));
$paginator = new Paginator($adapter);
// .......

相关内容

  • 没有找到相关文章

最新更新