php - 使用多个 SELECT 在 Doctrine CreateQueryBuilder 上获取语法错误
问题描述
我在下面有这个查询,它按预期返回所有内容。但是,运行时我得到一个学说语法错误,但我无法精确定位它。有没有一种特殊的方法可以在 Doctrine 中添加多个选择?
这是我的功能。
public function summaryReport()
{
$qb = $this->createQueryBuilder('ds')
->select('ds.d_id, ds.d_name,
SUM(ds.c_email IS NOT NULL) * 100.00 / COUNT(c_number) AS percentage,
COUNT(DISTINCT ds.c_number) AS Qualifying_customers,
sum(ds.c_email IS not NULL) AS Qualifying_Customers_with_Email')
->groupBy('ds.d_id, ds.d_name')
->getQuery();
dd($qb->getDQL());
return $qb->getResult();
}
我收到的错误是
Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got 'IS'
addSelect 会将它们分开吗?
解决方案
这是通过的查询
public function summaryReport()
{
$qb = $this->createQueryBuilder('ds')
->select('ds.d_id, ds.d_name,
(sum(case when ds.c_email IS null then 0 else 1 end))*100/count(ds.c_number) as percentage')
->addSelect('COUNT(DISTINCT ds.c_number) AS qualifying')
->addSelect('sum(case when ds.c_email IS NULL then 0 else 1 end) AS qualifyingEmail')
->groupBy('ds.d_id, ds.d_name')
->getQuery();
return $qb->getResult();
}
推荐阅读
- javascript - 如何判断溢出省略号是否在块 HTML 元素上可见
- python - GCP 云函数助手
- flutter - Flutter Web Page 从服务器下载文件
- startup - 无法启动 openJMS 版本 0.7.7-beta
- javascript - 无法使用 TypeScript 创建动态对象
- python - 上下文必须是字典而不是列表渲染模板
- css - 如何从以下 CSS 规则中排除移动设备
- python - 如何循环 python 列表输入验证?
- python - 为什么我的 Python venv 目录是只读的?
- pytorch - 在训练期间更改 Dropout 值