src/Repository/Admin/PageRepository.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Admin;
  3. use App\Data\RechercheDonnees;
  4. use App\Entity\Admin\Page;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Knp\Component\Pager\Pagination\PaginationInterface;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. /**
  10.  * @method Page|null find($id, $lockMode = null, $lockVersion = null)
  11.  * @method Page|null findOneBy(array $criteria, array $orderBy = null)
  12.  * @method Page[]    findAll()
  13.  * @method Page[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  14.  */
  15. class PageRepository extends ServiceEntityRepository
  16. {
  17.     private $paginator;
  18.     public function __construct(ManagerRegistry $registryPaginatorInterface $paginator)
  19.     {
  20.         parent::__construct($registryPage::class);
  21.         $this->paginator $paginator;
  22.     }
  23.     public function findByMenu($parametremenu): ?Page
  24.     {
  25.         $query =  $this->createQueryBuilder('p');
  26.         $query $query
  27.             ->andWhere('p.parametremenu LIKE :parametremenu')
  28.             ->setParameter('parametremenu''%'.$parametremenu.'%')
  29.         ;
  30.         return $query->getQuery()
  31.             ->getOneOrNullResult()
  32.             ;
  33.     }
  34.     public function findByNombreClick()
  35.     {
  36.         return $this->createQueryBuilder('pg')
  37.             ->orderBy('pg.nombreClick''DESC')
  38.             ->andWhere('pg.nombreClick != 0')
  39.             ->setMaxResults(6)
  40.             ->getQuery()
  41.             ->getResult()
  42.             ;
  43.     }
  44.     /**
  45.      * Récupère les pages; theme; et autre en lien avec la recherche
  46.      * @return PaginationInterface
  47.      */
  48.     public function findSearch(RechercheDonnees $search): PaginationInterface
  49.     {
  50.         $query $this
  51.             ->createQueryBuilder('p')
  52.             ->orderBy('p.id''DESC')
  53.             ->setParameter('today', new \DateTime())
  54.         ;
  55.         if (! empty($search->q)){
  56.             $query $query
  57.                 ->where('p.designation LIKE :search')
  58.                 ->orWhere('p.titrePage LIKE :search')
  59.                 ->setParameter('q'"%{$search->q}%");
  60.         }
  61.         $query $query->getQuery();
  62.         return $this->paginator->paginate(
  63.             $query,
  64.             $search->page,
  65.             12
  66.         );
  67.     }
  68. }