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;
    }