ActiveDataProvider 怎么使用 sum(colum) ? [ 2.0 版本 ]
数据库是这样
我想实现的sql是这样
select *, sum(money) as sumMoney from table GROUP BY userId order by sumMoney desc
yii中是这样写的
$dataProvider = new ActiveDataProvider([
'query' => (new \yii\db\Query)->select(['*', 'sum(money) as sumMoney'])->from('za_shared_revenue_record')->groupBy('userId')->orderBy('sumMoney desc'),
]);
问题来了,这样的结果 dataProvider 是不对的,没法在 GridView 中使用 sumMoney 。
求大神出招,怎么在 GridView 中使用 sumMoney。
最佳答案
其他 2 个回答
-
1 派生
yii\grid\DataColumn
类,派生类中重载init
函数,在init
函数中给$this->content赋值即可(当然实际操作上应该是在这里调用另一个随便什么自定义的函数)。例如如下代码片段:class Mediafilescolumn extends DataColumn { public function init() { $this->content = [$this, 'makeCellContent']; } protected function makeCellContent($model) { # 注意这里可以访问$model,所以你的sumMoney也可以取到 ... return sprintf('%d', $model->sumMoney); }
2 在GridView中
'columns'
属性中增加这个列,指明class为上述的派生类即可:'columns' => [ ... [ 'class' => 'app\modules\advertise\models\MediaFilesColumn', 'label' => 'Media Files', 'options'=>['width'=>'10%',], ],
雅戈
注册时间:2014-10-11
最后登录:2020-08-05
在线时长:10小时7分
最后登录:2020-08-05
在线时长:10小时7分
- 粉丝7
- 金钱255
- 威望10
- 积分455