phpixie / paginate
PHPixie 的分页库
3.1.1
2018-02-16 00:21 UTC
Requires (Dev)
- phpixie/test: ~3.0
This package is auto-updated.
Last update: 2024-09-13 01:59:59 UTC
README
PHPixie 分页库
这是 PHPixie 分页的基础包,它被拆分为几个组件。
// Initializing $paginate = new \PHPixie\Paginate();
基础库只能分页数组,也提供了一个 ORM 扩展,我们稍后会详细讨论。首先,让我们看一个使用示例
// Array with a 100 items $data = range(1, 100); // Initialize the pager // with 15 items per page $pager = $paginate->arrayPager($data, 15); // Set current page $pager->setCurrentPager(3); // A shorter way to do this: $pager = $paginate->arrayPager($data, 15) ->setCurrentPage(3); // Get some data $pager->currentPage(); // 3 $pager->pageSize(); // 15 $pager->itemCount(); // 100 $pager->pageCount(); // 7 // Get current items $pager->currentItems(); // Check if page exists: $pager->pageExists(1); // true // Check if a page exists // relative to the current one $this->pageOffsetExists(-1); // true // Get page number by relative offset // Will return null if the page is missing // In this case 4, since 3 is the current one $this->getPageByOffset(1); // Some shorthands, // also return null if page missing $this->next(); // 4 $this->previous(); // 2
一个更有趣的特性是获取当前页相邻的页,这对于渲染分页器非常有用。
// 15 items, split into 6 pages $data = range(1, 18); $pager = $paginate->arrayPager($data, 3); $pager->setCurrentPage(3); $pager->getAdjacent(3); // array(2, 3, 4); $pager->setCurrentPage(1); $pager->getAdjacent(2); // array(1, 2); $pager->setCurrentPage(5); $pager->getAdjacent(4); // array(3, 4, 5, 6);
ORM
首先,我们需要构建 ORM 分页库
$paginate = new \PHPixie\Paginate(); $paginateOrm = new \PHPixie\PaginateORM($paginate);
ORM 分页支持关系预加载
$pager = $paginateOrm->queryPager($query, 15); // Or with the relationships specified $pager = $paginateOrm->queryPager($query, 15, array('items'));
它也会考虑你为查询指定的限制和偏移量。这意味着如果你在创建分页器之前限制查询中的项目,只有那些项目会被分页
$query->limit(100)->offset(10); $pager = $paginateOrm->queryPager($query, 15); // Only those 100 items // are in the pager $pager->itemCount(); // 100