教义查询生成器的数量很多

时间:2018-10-15 08:59:25

标签: mysql doctrine-orm query-builder

我有实体要约。优惠与文件之间具有多对多关系。 现在,我想要所有报价,这些报价都有文件-> Count(offer.files)> 0。

我这样尝试过,但是不起作用:

2.1

2 个答案:

答案 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')

Inner join in detail Doctrine query builder

答案 1 :(得分:0)

实际上,您不需要加入。为此,Doctrine内置了SIZE DQL function

  

SIZE(collection)-返回指定集合中的元素数

所以您可以这样使用它:

$this->repository->createQueryBuilder('offer')
    ->addSelect('SIZE(offer.files) as files')
    ->having('files > 1')
    ->getQuery()
    ->getResult();