sql >> Base de Datos >  >> RDS >> Mysql

Consulta Sql/Doctrine para encontrar datos con múltiples condiciones con asociaciones Many to Many

Para obtener los negocios que existen en ambas categorías, escriba su generador de consultas de la siguiente manera, asumo que sus entidades están asignadas con una relación adecuada de muchos a muchos

$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();

Para referencia, vea otra respuesta>aquí