Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête Sql/Doctrine pour trouver des données avec plusieurs conditions avec des associations plusieurs à plusieurs

Pour obtenir les entreprises qui existent dans les deux catégories, écrivez votre générateur de requête comme suit, je suppose que vos entités sont mappées avec une relation plusieurs à plusieurs appropriée

$repo = $this->getDoctrine()->getRepository('YourBundle:Business');

$repo = $this->createQueryBuilder('b')
    ->addSelect('COUNT(DISTINCT  c.id) AS total_categories')
    ->innerJoin('b.categories', 'c');

$categoryIds = array(1,2);

$repo->add('where', $qb->expr()->in('c', $categoryIds))
    ->groupBy('b.id')
    ->having('total_categories = '.count($categoryIds))
    ->getQuery()
    ->getResult();

Pour référence, voir une autre réponse ici