IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Filtrage avec requête doctrine dans Repository


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2021
    Messages : 35
    Points : 52
    Points
    52
    Par défaut Filtrage avec requête doctrine dans Repository
    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.
    Nom : schemabdd.png
Affichages : 150
Taille : 22,6 Ko
    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

  2. #2
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    essaye quelque chose comme ceci (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if($typeFilters != null){
            // sélectionne les vidéos qui ont une relation avec toutes les catégories de la liste $typeFilters
            foreach ($typeFilters as $index => $typeFilter) {
                $query->andWhere(":type".$index." MEMBER OF e.categories")
                    ->setParameter(":type".$index, $typeFilter);
            }
        }

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2021
    Messages : 35
    Points : 52
    Points
    52
    Par défaut
    Salut, j'ai trouvé un autre moyen en faisant un group by et un having du nombre de catégorie ! Merci quand même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tfileInputMSXML en mode sax avec requète XPAth dans la boucle
    Par scandinave dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 14/05/2013, 14h59
  2. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  3. Probleme avec requête Ajout dans VBA
    Par deglingo37 dans le forum Access
    Réponses: 1
    Dernier message: 26/05/2006, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo