我有两个实体:Location
和Program
。他们有多对多的关系。程序具有属性$status
,可以是'published'
或'unpublished'
。
现在,我想运行一个查询(使用学说查询构建器)以返回我的所有Location
实体,这些实体与至少10个Program
实体有关系,且$status
为'published'
。
到目前为止我的代码
public function findLocationsOfPublishedPrograms()
{
$qb = $this->createQueryBuilder('l')
->innerJoin('l.programs', 'p')
->andWhere('p.status = \'published\'')
->getQuery()->getResult();
return $qb;
}
此查询将恢复具有至少一个发布程序的所有Location
实体。但是,有什么方法可以设置条件以仅返回至少有 10 个发布程序的Location
实体?
答案 0 :(得分:1)
您可以将innerJoin WITH p.status =发布。然后在其中计数为p。*> = 10
带条件的innerJoin示例在文档中: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/query-builder.html#working-with-querybuilder