sql >> Databasteknik >  >> RDS >> Mysql

SQL/Doctrine-fråga för att hitta data med flera villkor med många till många-associationer

För att få företagen som finns i båda kategorierna skriver du din frågebyggare enligt följande, jag antar att dina enheter är mappade med rätt många till många relationer

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

För referens se ett annat svar här



  1. MySQL hoppa över de 10 första resultaten

  2. Hur visar jag en bild från blob-kolumnen i Oracle med JasperReports?

  3. Hur man använder en fallbeskrivning för att avgöra vilket fält som ska gå med i

  4. Hur extraherar man endast datumvärde från datumfält i Oracle?