ardiakov / paginator
分页器
0.0.2
2019-10-18 09:15 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^6.4
This package is not auto-updated.
Last update: 2024-09-29 05:55:27 UTC
README
-
需要实现 DataProviderInterface
Doctrine ORM 的示例 DataProvider
class DoctrineDataProvider implements DataProviderInterface { /** * @var QueryBuilder */ private $queryBuilder; /** * @var Page */ private $currentPage; public function __construct(QueryBuilder $queryBuilder, Page $currentPage) { $this->queryBuilder = $queryBuilder; $this->currentPage = $currentPage; } public function getData(): iterable { return $this->queryBuilder ->setFirstResult($this->currentPage->getOffset()) ->setMaxResults($this->currentPage->getLimit()) ->getQuery() ->getResult(); } public function countItems(): int { $cloneQb = clone $this->queryBuilder; $alias = $cloneQb->getRootAliases()[0]; return $cloneQb->select(sprintf('count(%s)', $alias)) ->getQuery() ->getSingleScalarResult(); } public function getCurrentPage(): Page { return $this->currentPage; } } -
调用分页器
$page - page number from request (int) Paginator::create() ->setDataProvider(new DoctrineDataProvider($qb, Page::create($page,6))) ->paginate();
结果
[
totalItems: 124,
totalPages: 10,
currentPage: 1,
data: []
]