src/Repository/DiaporamaRepository.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Diaporama;
  4. use App\Common\LieuInterface;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use App\Repository\Helper\LieuFilterTrait;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. /**
  9.  * @method Diaporama|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method Diaporama|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method Diaporama[]    findAll()
  12.  * @method Diaporama[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class DiaporamaRepository extends ServiceEntityRepository
  15. {
  16.     use LieuFilterTrait;
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registryDiaporama::class);
  20.     }
  21.     public function findByLieu(LieuInterface $lieuint $limit, array $filter$types): array
  22.     {
  23.         $builder $this->createQueryBuilder('d');
  24.         $builder
  25.             ->innerJoin('d.etablissements''etablissement')
  26.             ->innerJoin('etablissement.ville''ville')
  27.             ->innerJoin('ville.departement''departement')
  28.             ->innerJoin('departement.ancienneRegion''ancienneRegion')
  29.             ->innerJoin('ancienneRegion.region''region')
  30.             ->setMaxResults($limit)
  31.             ->orderBy('d.dateCrea''DESC');
  32.         if ('default' != $lieu->getSlug()) {
  33.             $this->addWhereLieuToQuery($builder$lieu);
  34.         }
  35.         if ($filter) {
  36.             $builder->andWhere($builder->expr()->in('d.etablissements'$filter));
  37.         }
  38.         if ($types) {
  39.             $builder->andWhere($builder->expr()->in('etablissement.type'$types));
  40.         }
  41.         // Seulement les dispo+
  42.         $builder->andWhere($builder->expr()->eq('etablissement.diapoPlus'true));
  43.         return $builder
  44.             ->getQuery()
  45.             ->enableResultCache(3600)
  46.             ->getResult();
  47.     }
  48.     public function findAlaUne(int $limit): array
  49.     {
  50.         $builder $this->createQueryBuilder('d');
  51.         $builder
  52.             ->innerJoin('d.etablissements''etablissement')
  53.             ->where($builder->expr()->eq('etablissement.diapoPlus'true))
  54.             ->leftJoin('d.etablissements''e')
  55.             ->addSelect('e')
  56.             ->leftJoin('e.gestionnaire''g')
  57.             ->addSelect('g')
  58.             // ->leftJoin('g.ville', 'gville')
  59.             // ->addSelect('gville')
  60.             // ->leftJoin('gville.coordonnees', 'gvilleCoordonnees')
  61.             // ->addSelect('gvilleCoordonnees')
  62.             ->leftJoin("g.texteReferencement"'gtexteReferencement')
  63.             ->addSelect('gtexteReferencement')
  64.             
  65.             ->leftJoin("e.ville"'ville')
  66.             ->addSelect('ville')
  67.             ->leftJoin('ville.coordonnees''villeCoordonnees')
  68.             ->addSelect('villeCoordonnees')
  69.             ->leftJoin('ville.departement''departement')
  70.             ->addSelect('departement')
  71.             ->leftJoin('departement.coordonnees''departementCoordonnees')
  72.             ->addSelect('departementCoordonnees')
  73.             ->leftJoin('departement.ancienneRegion''ancienneRegion')
  74.             ->addSelect('ancienneRegion')
  75.             ->leftJoin('ancienneRegion.region''region')
  76.             ->addSelect('region')
  77.             ->leftJoin('region.pays''pays')
  78.             ->addSelect('pays')
  79.             ->leftJoin("e.categoriePrimaire"'categoriePrimaire')
  80.             ->addSelect('categoriePrimaire')
  81.             ->leftJoin("e.texteReferencement"'texteReferencement')
  82.             ->addSelect('texteReferencement')
  83.             ->setMaxResults($limit)
  84.             ->orderBy('d.dateCrea''DESC')
  85.         ;
  86.         return $builder
  87.             ->getQuery()
  88.             ->getResult();
  89.         
  90.         
  91.         
  92.         $builder $this->createQueryBuilder('d');
  93.         $builder
  94.             ->innerJoin('d.etablissements''etablissement')
  95.             ->setMaxResults($limit)
  96.             ->orderBy('d.dateCrea''DESC')
  97.             ->where($builder->expr()->eq('etablissement.diapoPlus'true));
  98.         return $builder
  99.             ->getQuery()
  100.             ->getResult();
  101.     }
  102.     public function findByEtabs($etabs)
  103.     {
  104.         $builder $this->createQueryBuilder('d');
  105.         $builder
  106.             ->innerJoin('d.etablissements''e')
  107.             ->where($builder->expr()->in('e'':etablissement'))
  108.             ->setParameter('etablissement'$etabs);
  109.         return $builder;
  110.     }
  111.     public function findByNiveau($builder$types)
  112.     {
  113.         if ($types) {
  114.             $builder
  115.                 ->andWhere($builder->expr()->in('e.type'$types));
  116.         }
  117.         return $builder;
  118.     }
  119. }