三个查询合而为一

时间:2019-05-26 23:07:32

标签: symfony doctrine query-builder

我创建了三个查询构建查询,我尝试将它们组合成一个查询学说,但是我不知道如何实现 创建单个请求的目的是消除往返客户端服务器。请问我如何获得一个请求?

这是我的请求1

/**
     * @param Analyse $analyse
     * @return mixed
     * @throws \Doctrine\ORM\NonUniqueResultException
     */
    public function countTotalErrorByIdAnalyse(Analyse $analyse)
    {
        return $this->createQueryBuilder('a')
                    ->select('count(a)')
                    ->innerJoin('a.analyse', 'analyse')
                    ->where('analyse.id = :analyse')
                    ->setParameter('analyse', $analyse->getId())
                    ->getQuery()
                    ->getSingleScalarResult();


    }
 这是我的要求2

/**
     * @param Analyse $analyse
     * @param string $severity
     * @return mixed
     * @throws \Doctrine\ORM\NonUniqueResultException
     */
    public function countTypeError(Analyse $analyse, string $severity){

      return   $this->createQueryBuilder('a')
                    ->select('count(a)')
                    ->innerJoin('a.analyse', 'analyse')
                    ->innerJoin('a.rule', 'rule')
                    ->where('rule.severity = :error')
                    ->setParameter('error', $severity)
                    ->getQuery()
                    ->getSingleScalarResult();

    }

这是我的要求3

 /**
     * @param Analyse $analyse
     * @return mixed
     * @throws \Doctrine\ORM\NonUniqueResultException
     */
    public function listTypeError(Analyse $analyse){

        return  $this->createQueryBuilder('a')
            ->select('rule.message')
            ->innerJoin('a.analyse', 'analyse')
            ->innerJoin('a.rule', 'rule')
            ->where('rule.severity = :error')
            ->setParameter('error', 'ERROR')
            ->getQuery()
            ->getResult();

    }

0 个答案:

没有答案