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');