条令查询生成器count manytomy

93ze6v8z  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(311)

我有一个实体报价。offer与文件有很多关系。现在我想要所有报价,有文件->计数(offer.files)>0。
我这样试过,但没用:

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

gg0vcinb1#

实际上你不需要加入。教条已经形成 SIZE dql函数。
size(collection)-返回指定集合中的元素数
所以你可以这样使用它:

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

rqmkfv5c2#

您需要通过根实体提供与关联和组进行内部联接:

->innerJoin('offer.files', 'files')

inner join关键字选择两个表中具有匹配值的记录。
然后您可以:

->addSelect('COUNT(files) as total')
->having('total > 1')
->groupBy('offer')

如果不需要结果中的总计,可以将其定义为隐藏,将上面的第一行更改为:

->addSelect('COUNT(files) as HIDDEN total')

查询生成器中的内部联接

相关问题