Bonjour,

J'ai une liste déroulante (service) qui se met à jour par ajax quand est effectué un choix dans une autre liste (catégorie).

Mon problème est que lorsque je choisis 2 choix dans la liste catégorie, il ne prend que le dernier choix et non pas les deux.

là où je coince, c'est aplliquer une condition dans le createnativequery :
LEFT JOIN document d ON (d.category_id=:categorie_1 OR d.category_id=:categorie_2)

Voilà ci-dessous la requête que je souhaite appliquer à createNativeQuery

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT  s.id, s.name, COUNT(s.id) as nb_service2
        FROM service s
        INNER JOIN service_document sd 
        ON s.id = sd.service_id
        LEFT JOIN document d ON (d.category_id=:categorie_1 OR d.category_id=:categorie_2)
        WHERE d.category_id IS NOT NULL AND sd.document_id=d.id AND d.enabled = 1 GROUP BY s.id order by name
Et voiçi ci-dessous le code que j'utilise pour générer la liste des services selon le choix des catégories :

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
19
20
21
22
public function listeDocumentServiceCategorieNotEmpty($class, $categorie)
{ 
 
    foreach($categorie as $categories) {
    $em = $this->getEntityManager();
    $rsm = new ResultSetMappingBuilder($em);
      $rsm->addRootEntityFromClassMetadata(Service::class, 's');
    $join_table = $em->getClassMetadata($class)->getAssociationMapping('services');
 
     $mySql = "
        SELECT  s.id, s.name, COUNT(s.id) as nb_service2
        FROM service s
        INNER JOIN service_document sd 
        ON s.id = sd.service_id
        LEFT JOIN document d ON d.category_id=:categorie
        WHERE d.category_id IS NOT NULL AND sd.document_id=d.id AND d.enabled = 1 GROUP BY s.id order by name";
 
     $query = $em->createNativeQuery($mySql, $rsm);
     $query->setParameter('categorie', $categories);
    return $query->getArrayResult();
    }
}

En espérant que quelqu'un puisse m'éclairer...