vendor/easycorp/easyadmin-bundle/src/Search/Paginator.php line 32

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Search;
  3. use Doctrine\ORM\Query as DoctrineQuery;
  4. use Doctrine\ORM\QueryBuilder as DoctrineQueryBuilder;
  5. use Doctrine\ORM\Tools\Pagination\CountWalker;
  6. use Pagerfanta\Adapter\DoctrineORMAdapter;
  7. use Pagerfanta\Pagerfanta;
  8. /**
  9.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  10.  */
  11. class Paginator
  12. {
  13.     private const MAX_ITEMS 15;
  14.     /**
  15.      * Creates a Doctrine ORM paginator for the given query builder.
  16.      *
  17.      * @param DoctrineQuery|DoctrineQueryBuilder $queryBuilder
  18.      * @param int                                $page
  19.      * @param int                                $maxPerPage
  20.      *
  21.      * @return Pagerfanta
  22.      */
  23.     public function createOrmPaginator($queryOrQueryBuilder$page 1$maxPerPage self::MAX_ITEMS)
  24.     {
  25.         $query $this->getQuery($queryOrQueryBuilder);
  26.         // don't change the following line (you did that twice in the past and broke everything)
  27.         $paginator = new Pagerfanta(new DoctrineORMAdapter($querytruefalse));
  28.         $paginator->setMaxPerPage($maxPerPage);
  29.         $paginator->setCurrentPage($page);
  30.         return $paginator;
  31.     }
  32.     /**
  33.      * @param DoctrineQuery|DoctrineQueryBuilder $queryOrQueryBuilder
  34.      */
  35.     private function getQuery($queryOrQueryBuilder): DoctrineQuery
  36.     {
  37.         if ($queryOrQueryBuilder instanceof DoctrineQuery) {
  38.             return $queryOrQueryBuilder;
  39.         }
  40.         $query $queryOrQueryBuilder->getQuery();
  41.         if (=== \count($queryOrQueryBuilder->getDQLPart('join'))) {
  42.             $query->setHint(CountWalker::HINT_DISTINCTfalse);
  43.         }
  44.         return $query;
  45.     }
  46. }