Paginate any dataset with Laminas Paginator: DbSelect adapter, setItemCountPerPage, view helper.
Paginator
use Laminas\Paginator\Paginator;
use Laminas\Paginator\Adapter\DbSelect;
$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);
foreach ($paginator as $item) {
echo $item["title"];
}
echo "Total: " . $paginator->getTotalItemCount();