Exemplo n.º 1
0
 /**
  * Custom find all, sort by createAt desc.
  *
  * @param array $filtersKeys List medias in this filters
  */
 public function findAllByFiltersKeys(array $filtersKeys)
 {
     $qb = $this->entityManager->getRepository($this->class)->createQueryBuilder('m');
     $filters = array();
     $addNull = false;
     $inversedfilters = array();
     foreach ($filtersKeys as $filter) {
         if ($this->filter->has($filter)) {
             $value = $this->filter->get($filter);
             $inversedfilters[$value] = $filter;
             if ($value === null) {
                 $addNull = true;
             } else {
                 $filters[] = $value;
             }
         }
     }
     if ($addNull === false && empty($filters)) {
         return array();
     }
     if (!empty($filters)) {
         $qb->select('m')->where($qb->expr()->in('m.filter', $filters));
     }
     if ($addNull === true) {
         $qb->orWhere('m.filter IS NULL');
     }
     $medias = $qb->orderBy('m.createdAt', 'DESC')->getQuery()->getResult();
     foreach ($medias as $media) {
         $media->setCryptedFilter($inversedfilters[$media->getFilter()]);
     }
     return $medias;
 }