Symfony 5 queryBuilder 计数数据

Symfony 5 queryBuilder count data

在我的一个查询中,我加入了三个 table 以允许我通过考虑这三个 table 来进行过滤。

问题是当我对来自主 table (CV table) 的数据进行计数器时,就像我加入语言 table (ManyToMany) 一样,类别 table 和文凭 table (manyToMany),当我对数字 cv 进行计数器时,后者还会考虑用户每次向他的 cv 添加语言或文凭。 (如果 table 中有 20 个基本简历,如果有人更改他们的简历以添加三种语言,则计数器将上升到 23,而仍然有 20 个简历)

我被迫加入语言和文凭 table 以允许按这些条件过滤 cvs,我被迫通过从 searchQuery 中获取数据来进行计数器操作,以便例如,如果没有人按语言过滤,它会正确显示 cvs 的数量。

那么我怎样才能在保持按这些条件过滤的可能性的同时,只计算简历而不计算语言和文凭的数量? 如果可能,基本上只是隐藏语言和文凭加入柜台?

这是搜索查询的快速代码:

    private function getSearchQuery(SearchData $search, $ignorePrice = false): QueryBuilder
    {
        $query = $this
            ->createQueryBuilder('p')
            ->select('c', 'p')
            ->join('p.category', 'c')
            ->leftJoin('p.langue', 'l')
            ->leftJoin('p.diplome', 'd');
        // ->select('DISTINCT IDENTITY(c.id)', 'DISTINCT IDENTITY(p.id)');

和计数器:

public function countSearch(SearchData $search)
{
    return $this->getSearchQuery($search)
        ->select('COUNT(p)')
        ->getQuery()
        ->getSingleScalarResult();
}

通过像这样编辑我的计数函数解决了问题:

select count distinct p 

它正在运行。