Slo*_*wie 6 php pagination symfony doctrine-orm knppaginator
我有问题,knp paginator只能这样工作:
$em = $this->get('doctrine.orm.entity_manager');
$dql = "SELECT a FROM MainArtBundle:Art a";
$query = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query,
$this->get('request')->query->get('page', 1) /*page number*/,
8 /*limit per page*/
);
Run Code Online (Sandbox Code Playgroud)
但不是这样:
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('MainArtBundle:Art')->findAll();
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$entities,
$this->get('request')->query->get('page', 1) /*page number*/,
/*limit per page*/
);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我不明白.
这是我的树枝电话:
<li>{{ knp_pagination_sortable(paginator, 'Oldest', 'a.id', {'direction': 'desc'}) }}</li>
Run Code Online (Sandbox Code Playgroud)
问候迈克尔
findAll() 与Knp_paginator兼容,您只需将它提供给您的paginator:
$query = $em->getRepository('Acme\FOOBundle\Entity\BAR')->findAll();
$paginator = $this->get('knp_paginator');
requests = $paginator->paginate(
$query,
$this->get('request')->query->get('page', 1),
5
);Run Code Online (Sandbox Code Playgroud)
KNP不支持的数组元素的排序,如所描述这里。
在数据库级别更好地提取和排序数据。在您的第二个示例中,您从表中获取所有数据(并且可以更大),然后您要求分页器限制它们。这表现不佳。所以最好使用查询来完成这项工作,并让我们管理分页器元素。
目前 KNP Paginator 可以分页:
arrayDoctrine\ORM\QueryDoctrine\ORM\QueryBuilderDoctrine\ODM\MongoDB\Query\QueryDoctrine\ODM\MongoDB\Query\BuilderDoctrine\Common\Collection\ArrayCollection- 任何学说关系集合,包括
ModelCriteria- Propel ORM 查询Solarium_Client和Solarium_Query_Select作为元素的数组有关详细信息,请参阅文档参考
我的两分钱
| 归档时间: |
|
| 查看次数: |
6138 次 |
| 最近记录: |