Problème createNativeQuery et condition avec OR
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:
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:
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...