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
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 : 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
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...
Partager