Paginate database results with Laminas Paginator using DbSelect adapter and view helpers.
Pagination
use LaminasPaginatorPaginator;
use LaminasPaginatorAdapterDbSelect;
use LaminasPaginatorAdapterArrayAdapter;
// DB-backed paginator
$select = $sql->select("posts")->order("created_at DESC");
$adapter = new DbSelect($select, $adapter);
$paginator = new Paginator($adapter);
$paginator->setCurrentPageNumber((int)($params["page"] ?? 1));
$paginator->setItemCountPerPage(10);
$paginator->setPageRange(5);
// In view model
return new ViewModel(["paginator" => $paginator]);
// In view template
<?= $this->paginationControl($paginator, "Sliding", "pagination/default") ?>
// Array paginator
$paginator = new Paginator(new ArrayAdapter($dataArray));
// Current page items
foreach ($paginator as $item) {
echo $item["title"];
}
echo "Total: " . $paginator->getTotalItemCount();
echo "Pages: " . $paginator->count();