我的实体“parent”与OneToMany上下文中的实体“child”有关。父母有很多孩子。
我需要过滤符合某些条件的这些孩子。在这种情况下,有效的子ID列表。
我想让只有父母的ALL和ONLY孩子符合条件。现在,通过下面的代码,我可以让孩子匹配条件,但也可以让孩子符合条件。
return $this->createQueryBuilder('p')
->innerJoin('p.childs','c','with','c.child IN (:child_list)')
->having('count(c) = :count_child')
->groupBy('s')
->setParameter('child_list',$childs)
->setParameter('count_child',count($childs))
->getQuery()
->getScalarResult()
;
答案 0 :(得分:0)
一种方法是:
更改为:
return $this->createQueryBuilder('p')
->innerJoin('p.childs','c')
->addSelect('SUM(case when c.id IN (:child_list) then 1 else 0 end) as HIDDEN totalFound');
->having('totalFound = :count_child AND count(c) = :count_child')
->groupBy('p')
->setParameter('child_list',$childs)
->setParameter('count_child',count($childs))
->getQuery()
->getScalarResult()
;