我在指南中找到了这个,但不知道如何实现它
yii\db\Query::count();返回COUNT个查询的结果.其它类似的方法包括sum($q),average($q),max($q),min($q),支持所谓的聚集态数据查询.$q参数对于这些方法是必需的,可以是列名称或表达式.
比方说,我有一个表名称'billing',其中包含列:
name amount
charge1 110.00
charge2 510.00
Total - 620.00
Run Code Online (Sandbox Code Playgroud)
我如何实现使用
yii\db\Query::sum('amount');
Run Code Online (Sandbox Code Playgroud)
我也尝试过
$command = Yii::$app->db->createCommand("SELECT sum(amount) FROM billing");
yii\db\Query::sum($command);
Run Code Online (Sandbox Code Playgroud)
但页面生成错误.
谢谢.
Cal*_*leb 20
您尝试的代码的第一部分似乎是尝试使用查询生成器.在这种情况下,您必须创建查询实例,设置目标表,然后计算总和:
通过查询生成器(http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html):
$query = (new \yii\db\Query())->from('billing');
$sum = $query->sum('amount');
echo $sum;
Run Code Online (Sandbox Code Playgroud)
您尝试的第二部分代码似乎是尝试使用数据访问对象.在这种情况下,你可以写原始SQL查询数据库,但必须使用queryOne(),queryAll(),queryColumn(),或queryScalar()执行查询. queryScalar()适用于此类聚合查询.
通过数据访问对象(http://www.yiiframework.com/doc-2.0/guide-db-dao.html):
$command = Yii::$app->db->createCommand("SELECT sum(amount) FROM billing");
$sum = $command->queryScalar();
echo $sum;
Run Code Online (Sandbox Code Playgroud)
Sta*_*nov 19
在模型中,也可以使用以下内容获取总和:
$this->find()->where(...)->sum('column');
Run Code Online (Sandbox Code Playgroud)
小智 7
我希望你的型号名称是Billing
在Billing模型中使用
$this->find()->sum('amount');
Run Code Online (Sandbox Code Playgroud)
在其他模型中
Billing::find()->sum('amount');
Run Code Online (Sandbox Code Playgroud)
您可以在搜索模型中直接使用yii查询概念
$this->find()->from('billing')->where(['column'=>value])->sum('amount');
Run Code Online (Sandbox Code Playgroud)
要么
$this->find()->where(['column'=>value])->sum('amount');
Run Code Online (Sandbox Code Playgroud)
模型外部(计费是模型名称)
Billing::find()->where(['column'=>value])->sum('amount');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39883 次 |
| 最近记录: |