symfony - 如何在 Symfony 中使用 sql 聚合 SUM
问题描述
从表 Invoice(id、invoice_id、produit、price)。
我正在尝试在 Symfony 中使用教义做这样的事情:
SELECT SUM(price) AS price_total
FROM Invoice
WHERE invoice_id = 1
这是我在 InvoiceRepository.php 中的请求:
$qb = $this->_em->createQueryBuilder("i");
$qb->select('SUM(i.price)')
->from('AppBundle:Invoice','i')
->where('i.invoice_id = :invoice')
->setParameter('invoice',$invoice);
return $qb->getQuery()->getSingleScalarResult();
但是这个请求总是返回第一个值而不是总和。
有人知道怎么了?
解决方案
要使用 SUM、AVG、COUNT 等聚合函数,您需要指定 GROUP BY 条件。像这样:
$qb = $this->_em->createQueryBuilder("i");
$qb->select('SUM(i.price)')
->from('AppBundle:Invoice','i')
->where('i.invoice_id = :invoice')
->groupBy('i.invoice_id') //<- here
->setParameter('invoice',$invoice);
return $qb->getQuery()->getSingleScalarResult();
推荐阅读
- python - 如何合并多行相同的数据框?或者如何在python中合并同一密钥对的多个值?
- python - 基于 Pandas 系列的高效差分矩阵计算
- kde - 在 Kde 的键盘快捷键中设置触发器时出错
- c# - 设计器不序列化 UserControl 的 DataGridView 属性的列
- python - 使用 python 的密码破解器
- python - 输入函数将输入转换为字符串,这就是我的列表输入不起作用的原因
- uinavigationcontroller - 故事板和模拟器中的导航栏默认颜色不正确
- scala - 在graphx中使用自定义顶点类型获取matchError
- python - df.drop_duplicates python
- ansible - 如何修复错误无法使用 maven_artifact 模块 ansible 从 nexus 存储库下载工件