我使用查询构建原则进行了两次计数查询,但是在我发现有几个重复的查询计数之后,我必须使用 UNION 但在原则查询构建中没有联合。
所以解决方案是使用原生 SQL 和 UNION。
我不知道如何在本地查询中进行翻译
这是我的要求 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 countErrorsBySeverity(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();
}