Yii2-获取列的和

Yii2-获取列的和,yii2,Yii2,我在指南中找到了这一点,但不知道如何实现这一点 yii\db\Query::count()返回计数查询的结果。其他 类似的方法包括sum($q),average($q),max($q),min($q),其中 支持所谓的聚合数据查询$q参数是必需的 对于这些方法,可以是列名或表达式 例如,假设我有一个带有列的表名“billing”: name amount charge1 110.00 charge2 510.00 Total - 620.00 如何使用 yii\db\Query:

我在指南中找到了这一点,但不知道如何实现这一点

yii\db\Query::count()返回计数查询的结果。其他
类似的方法包括
sum($q)
average($q)
max($q)
min($q)
,其中 支持所谓的聚合数据查询<代码>$q
参数是必需的 对于这些方法,可以是列名或表达式

例如,假设我有一个带有列的表名“billing”:

name     amount
charge1  110.00
charge2  510.00
Total -  620.00
如何使用

yii\db\Query::sum('amount');
我也试过这样做

$command = Yii::$app->db->createCommand("SELECT sum(amount) FROM billing");

yii\db\Query::sum($command);
但页面会产生错误


谢谢

您尝试的代码的第一部分似乎正在尝试使用查询生成器。在这种情况下,必须创建查询实例,设置目标表,然后计算总和:

通过查询生成器 ():

您尝试的代码的第二部分似乎试图使用数据访问对象。在这种情况下,您可以编写原始SQL来查询数据库,但必须使用
queryOne()
queryAll()
queryColumn()
queryScalar()
来执行查询
queryScalar()
适用于这样的聚合查询

通过数据访问对象 ():


在一个模型中,也可以通过以下方式获取总和:

$this->find()->where(...)->sum('column');

您可以在搜索模型中直接使用yii查询概念

$this->find()->from('billing')->where(['column'=>value])->sum('amount');

型号外部(计费为型号名称)


我希望你的型号是

内部计费模型的使用

$this->find()->sum('amount');
在其他型号中

Billing::find()->sum('amount');

非常感谢你。它很好用。但在第一个解决方案中,我必须编辑行,如
$sum=$query->sum('amount')可以吗?如果我按原样使用代码,我将得到对非对象上的成员函数sum()的错误调用,很高兴它能工作!关于变量名你是正确的,我已经更新了帖子。这样可以在搜索模型中添加函数,可以在网格或其他需要的地方使用。公共函数getTotalamount(){return$this->find()->from('billing')->where(['column'=>value])->sum('amount');}billing是模型名称当您使用模型本身时,它是干净而简单的。谢谢
$this->find()->where(['column'=>value])->sum('amount');
Billing::find()->where(['column'=>value])->sum('amount');
$this->find()->sum('amount');
Billing::find()->sum('amount');