Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL/Doctrine-Abfrage, um Daten mit mehreren Bedingungen mit Viele-zu-Viele-Verknüpfungen zu finden

Um die Unternehmen zu erhalten, die in beiden Kategorien vorhanden sind, schreiben Sie Ihren Abfragegenerator wie folgt. Ich gehe davon aus, dass Ihre Entitäten mit der richtigen Viele-zu-Viele-Beziehung zugeordnet sind

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

Als Referenz siehe eine andere Antwort hier