src/Repository/VideoRepository.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Common\LieuInterface;
  4. use App\Entity\Video;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Repository\Helper\LieuFilterTrait;
  8. /**
  9.  * @method Video|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method Video|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method Video[]    findAll()
  12.  * @method Video[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class VideoRepository extends ServiceEntityRepository
  15. {
  16.     use LieuFilterTrait;
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registryVideo::class);
  20.     }
  21.     public function findByLieu(LieuInterface $lieuint $limit, array $filter$types): array
  22.     {
  23.         $builder $this->createQueryBuilder('v');
  24.         $builder
  25.             ->innerJoin('v.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('v.dateCrea''DESC');
  32.         if ($lieu->getSlug() !="default") {
  33.             $this->addWhereLieuToQuery($builder$lieu);
  34.         }
  35.         if ($filter) {
  36.             $builder->andWhere($builder->expr()->in('v.etablissements'$filter));
  37.         }
  38.         if ($types) {
  39.             $builder->andWhere($builder->expr()->in('etablissement.type'$types));
  40.         }
  41.         return $builder
  42.             ->getQuery()
  43.             ->getResult();
  44.     }
  45.     public function findAlaUne(int $limit): array
  46.     {
  47.         $builder $this->createQueryBuilder('v');
  48.         $builder
  49.             ->innerJoin('v.etablissements''etablissement')
  50.             ->where($builder->expr()->eq('etablissement.videoPlus',true))
  51.             ->leftJoin('v.etablissements''e')
  52.             ->addSelect('e')
  53.             
  54.             
  55.             ->leftJoin("e.texteReferencement"'texteReferencement')
  56.             ->addSelect('texteReferencement')
  57.             // ->andWhere($builder->expr()->isNotNull('v.fileName')) // Pour "à la une", on n'affiche que les vidéos avec vignette
  58.             ->setMaxResults($limit)
  59.             ->orderBy('RAND()')
  60.             // ->orderBy('v.dateCrea', 'DESC')
  61.         ;
  62.         return $builder
  63.             ->getQuery()
  64.             ->getResult();
  65.     }
  66.     public function findByEtabs($etabs)
  67.     {
  68.         $builder $this->createQueryBuilder('v');
  69.         $builder
  70.             ->innerJoin('v.etablissements''e')
  71.             ->where($builder->expr()->in('e'':etablissement'))
  72.             ->setParameter('etablissement'$etabs);
  73.         return $builder;
  74.     }
  75.     public function findByNiveau($builder$types)
  76.     {
  77.         if ($types) {
  78.             $builder
  79.                 ->andWhere($builder->expr()->in('e.type'$types));
  80.         }
  81.         return $builder;
  82.     }
  83. }