queryBuilder = $queryBuilder; $this->setCurrentPageNumber($currentPageNumber); $this->setItemsPerPage($itemsPerPage); $this->updateInternalState(); } public function getPaginatedItems(): iterable { return $this->paginatedQueryResult; } protected function updatePaginatedItems(int $limit, int $offset): void { $this->paginatedQueryResult = $this->queryBuilder ->setMaxResults($limit) ->setFirstResult($offset) ->execute() ->fetchAllAssociative(); } protected function getTotalAmountOfItems(): int { return (clone $this->queryBuilder)->count('uid')->executeQuery()->fetchOne(); } protected function getAmountOfItemsOnCurrentPage(): int { return count($this->paginatedQueryResult); } }