我有实体要约。优惠与文件之间具有多对多关系。 现在,我想要所有报价,这些报价都有文件-> Count(offer.files)> 0。
我这样尝试过,但是不起作用:
2.1
答案 0 :(得分:1)
您需要inner join与关联和group by根实体提供:
->innerJoin('offer.files', 'files')
INNER JOIN关键字选择两个表中具有匹配值的记录。
然后您可以:
->addSelect('COUNT(files) as total')
->having('total > 1')
->groupBy('offer')
如果结果中不需要总计,则可以将其定义为隐藏,将上面的第一行更改为:
->addSelect('COUNT(files) as HIDDEN total')
答案 1 :(得分:0)
实际上,您不需要加入。为此,Doctrine内置了SIZE
DQL function。
SIZE(collection)-返回指定集合中的元素数
所以您可以这样使用它:
$this->repository->createQueryBuilder('offer')
->addSelect('SIZE(offer.files) as files')
->having('files > 1')
->getQuery()
->getResult();