sql >> Database >  >> RDS >> Mysql

Sql/Doctrine-query om gegevens te vinden met meerdere voorwaarden met veel tot veel associaties

Om de bedrijven te krijgen die in beide categorieën bestaan, schrijft u uw querybuilder als volgt, ik neem aan dat uw entiteiten in kaart zijn gebracht met de juiste veel-op-veel-relatie

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

Zie voor referentie een ander antwoord hier



  1. Hoe MySQL te configureren om hoofdlettergevoelig te zijn

  2. URL-verkortingssite

  3. Databasemodellering voor een zwakke entiteit

  4. MySql Triggers om onderliggende records in dezelfde tabel te verwijderen