Mysql
 sql >> Database >  >> RDS >> Mysql

Query Sql/Dottrine per trovare dati con condizioni multiple con associazioni Molti a Molti

Per ottenere le attività che esistono in entrambe le categorie, scrivi il tuo generatore di query come segue, suppongo che le tue entità siano mappate con una relazione da molti a molti corretta

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

Per riferimento, vedere un'altra risposta qui