Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta Sql/Doctrine para encontrar dados com várias condições com associações Many to Many


Para obter os negócios que existem em ambas as categorias, escreva seu construtor de consultas da seguinte maneira, suponho que suas entidades sejam mapeadas com o relacionamento adequado de muitos para muitos
$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 referência, veja outra resposta aqui