Exemplo n.º 1
0
 /**
  * Returns paginated content
  *
  * If the $queryBuilder for entities does include a grouping function, the automatic counting will fail (since
  * sub selects are not fully supported in DQL). You can pass an additional query builder just for the counting query
  * in $countQueryBuilder then (no need to set the select("COUNT(..)"), as this will be done automatically).
  *
  * @param QueryBuilder      $queryBuilder      The query builder to retrieve the entities
  * @param Pagination        $pagination        The pagination object
  * @param QueryBuilder|null $countQueryBuilder The additional query builder, just for the count query
  * @param int|null          $forceCount        if given, forces the count to be this exact value
  *
  * @return PaginatedList
  */
 protected function getPaginatedResults(QueryBuilder $queryBuilder, Pagination $pagination, QueryBuilder $countQueryBuilder = null, $forceCount = null)
 {
     $pagination->setNumberOfItems($this->getTotalNumberOfItems($queryBuilder, $countQueryBuilder, $forceCount));
     $offset = ($pagination->getCurrentPage() - $pagination->getMinPage()) * $pagination->getItemsPerPage();
     if (0 < $pagination->getNumberOfItems()) {
         $queryBuilder->setFirstResult($offset)->setMaxResults($pagination->getItemsPerPage());
         $list = iterator_to_array(new Paginator($queryBuilder->getQuery()));
     } else {
         $list = array();
     }
     return new PaginatedList($list, $pagination);
 }
Exemplo n.º 2
0
 /**
  * Tests for items per page, set in setter
  */
 public function testItemsPerPageSetter()
 {
     $pagination = new Pagination(1, 25);
     $pagination->setItemsPerPage(5);
     $this->assertSame(5, $pagination->getItemsPerPage());
 }