我的学说查询返回错误

问题描述

我想返回我的访问,但我需要一个不同的而不是一个计数。我尝试了这些存储库方法,但只计算有效。

工作:

public function numberOfVisitsBetweenDates($dateMin,$dateMax)
    {
        $builder = $this->createqueryBuilder('visit');
        $builder->select('count(disTINCT visit.user)');
        $builder->where('visit.date BETWEEN :dateMin AND :dateMax');
        $builder->setParameter('dateMin',$dateMin);
        $builder->setParameter('dateMax',$dateMax);
        $query = $builder->getQuery();
        // dd($query);
    
            return $query->getResult();
    }

我的转储 dql -_dql: "SELECT count(disTINCT visit.user) FROM App\Entity\Visit visit WHEREvisit.date BETWEEN :dateMin AND :dateMax"


不工作:

    public function numberOfVisitsBetweenDates($dateMin,$dateMax)
        {
            $builder = $this->createqueryBuilder('visit');
            $builder->select('visit.user');
            $builder->where('visit.date BETWEEN :dateMin AND :dateMax');
            $builder->setParameter('dateMin',$dateMin);
            $builder->setParameter('dateMax',$dateMax);
            $builder->distinct();
    
            $query = $builder->getQuery();
            // dd($query);
        
                return $query->getResult();
        }

我的转储 dql:-_dql:“SELECT disTINCT visit.user FROM App\Entity\Visit visit WHEREvisit.date BETWEEN :dateMin AND :dateMax” 我的错误

查询异常 查询异常 HTTP 500 内部服务器错误 [语义错误] 'user FROM App\Entity\Visit' 附近的第 0 行第 22 列:错误:无效的 PathExpression。必须是 StateFieldpathExpression。

两个代码几乎一样,我找不到解决方

解决方法

你应该尝试这样的事情:

    public function numberOfVisitsBetweenDates($dateMin,$dateMax)
        {
            $builder = $this->createQueryBuilder('visit');
            $builder->where('visit.date BETWEEN :dateMin AND :dateMax');
            $builder->setParameter('dateMin',$dateMin);
            $builder->setParameter('dateMax',$dateMax);
            $builder->groupBy('visit.user');
    
            $query = $builder->getQuery();
            return $query->getResult();
        }