Bonjour à tous,
voici le schéma de la bdd pour vous faire une idée de la demande, pour faire simple, j'ai une relation ManyToMany entre les tables Video et CategorieVideo.
j'ai fais un filtrage qui permet que lorsqu'on choisi une catégorie, on sélectionne uniquement les vidéos qui possèdent cette catégorie. Sauf qu'il y a un problème.
Je vous donne un cas concret pour que ce soit plus simple. Imaginons 2 catégories, romance et action. Et bien, si je sélectionne les 2, ceci affichera toutes les videos qui ont soit la catégorie romance, soit action. Sauf que je voudrais que la vidéo ai forcément action ET romance.
Dans le repository de vidéo, voici ma méthode :
(regardez seulement le if(typeFilters ...), pour le if($filters ...) je veux le garder comme ceci.)
$typeFilters est une liste de catégories sélectionnées: [0,1,2,...]
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public function findAllVideoCategories($page, $limit, $filters = null, $typeFilters = null){ $query = $this->createQueryBuilder('e') ->leftJoin('e.categories', 'r') ->leftJoin('e.typeVideo', 'a'); if($filters != null){ $query->andWhere('r.id IN (:cats)') ->setParameter(':cats', array_values($filters)); } if($typeFilters != null){ $query->andWhere('a.id IN (:type)') ->setParameter(':type', array_values($typeFilters)); } $query->setFirstResult(($page * $limit) - $limit) ->setMaxResults($limit) ; return $query->getQuery()->getResult(); }
Le problème ici est le IN de $query->andWhere('a.id IN (:type)')
mais je ne sais pas quoi le remplacer.
Merci d'avoir lu et merci à ceux qui vont m'aider !
Le problème vient donc du
Partager