php - 如何将总计添加到 yii2 GridView 的底部

标签 php mysql yii2

我有一个像这样的 GridView 。这些列是在 MySQL 查询的帮助下计算并相应显示的。

    <?php
  $subquery = Adanalytics::find()->
            select('id,ad_id,date_event,max(cpc) cpclick,max(cpv) cpview,max(impression) impression,max(view) view,max(clicks) clicks,visitor_ip,publisher_id')->
            from('ad_analytics')->
            where(['publisher_id' =>  Yii::$app->user->identity->id ])->
            groupBy('ad_id,date_event,visitor_ip');
  $query=Adanalytics::find()->
        select('ad_id,date_event,sum(cpclick) total_click_cost,sum(cpview) total_view_cost,sum(impression) total_impression,sum(view) total_views,sum(clicks) total_clicks,publisher_id')->
        from(['t'=>$subquery])->
        groupBy('t.ad_id,t.date_event');
 ?>

    <?= GridView::widget([

    'dataProvider'=>new ActiveDataProvider([
      'query' => $query,
    ]),
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'ad_id',
        'total_impression',
        'total_views',
        'total_clicks',
        'total_click_cost',
        'total_view_cost',
        'date_event',


        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

我想在此 GridView 的底部显示一个总计列。

例如

 'grand_total_impression',
        'grand_total_views', //This is the sum of all displayed views
        'grand_total_clicks',//This is the sum of all displayed clicks
        'grand_total_click_cost',//THis is the sum of all displayed cost
        'grand_total_view_cost',//This is the sum of all displayed view cost

为此,我的 Controller 中有如下代码。

  public function actionIndex()
    {
        $searchModel = new Adanalytics2Search();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $grandTotal = [];
        foreach ($dataProvider->getModels() as  $value) {
          // var_dump($value);
          // exit();
            $grandTotal['total_click_cost'] += $value['total_click_cost'];
            $grandTotal['total_view_cost'] += $value['total_view_cost'];
        }
        //var_dump($dataProvider);
         return $this->render('index', [
             'searchModel' => $searchModel,
             'dataProvider' => $dataProvider,
             'grandTotal'  => $grandTotal,
         ]);
    }

但是它以这种方式产生错误。

Undefined index: total_click_cost

我哪里出错了?或者有其他方法可以解决这个问题吗?

最佳答案

我强烈建议您使用katrik gridview。它可以更好地处理页面摘要并实现许多其他用途。或者在 gridview 中添加 'showPageSummary' => true 以显示列摘要。

关于php - 如何将总计添加到 yii2 GridView 的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115483/

相关文章:

mysql - DATE_ADD() on select() with codeigniter

php - Laravel 查询异常/SQLSTATE[42S02]

java - 结果集中的 fetchsize 默认设置为 0

php - 如何在数组中查找找到的 id 的索引

php - MySQL Closest Match 使用 ABS 混淆

php - 如何自动化 yii2 中的功能测试?

gridview - Yii2:如何将查询参数添加到索引操作的searchModel而不影响gridview的过滤模型

yii2 - 使用 Yii2 TimestampBehavior 返回 'created_at' 没有默认值错误

php - number_format 和负数的问题

php - 如何通过 PHP 查询脚本更改 phpMyAdmin root 密码