首页 > 解决方案 > Doctrine Query Builder 计数 ManyToMany

问题描述

我有一个实体报价。报价与文件具有多对多关系。现在我想拥有所有具有文件的报价-> Count(offer.files) > 0。

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

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

标签: mysqldoctrine-ormquery-builder

解决方案


其实你不需要加入。Doctrine 为此内置了SIZE DQL 功能

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

所以你可以像这样使用它:

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

推荐阅读