Вычислить среднее значение из kartik gridview (YII2)

#yii2

#yii2

Вопрос:

Я создаю приложение для учета затрат. И затем, в случае, мне удается суммировать данные, но когда я хочу получить среднее значение, я получаю сообщение об ошибке. Я должен попробовать слишком много кода здесь, но ничего не получается. Как я могу получить среднее значение из моих данных здесь?

Это мое мнение:

 <?php

use yiihelpersHtml;
use yiiwidgetsDetailView;
use kartikgridGridView;
use yiidataActiveDataProvider;
use backendmodelsPenerimaan;
use yiiwebApp;
/* @var $this yiiwebView */
/* @var $model backendmodelsTriwulan */

$this->title = $model->rm_code;
$this->params['breadcrumbs'][] = ['label' => 'Triwulan', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="triwulan-view">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>
        <?= Html::a('Update', ['update', 'id' => $model->rm_code], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Delete', ['delete', 'id' => $model->rm_code], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?>
    </p>

    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'rm_code',
            'deskripsi_barang',
        ],
    ]) ?>

       <?= GridView::widget([
              'dataProvider'=>new yiidataActiveDataProvider([

                 'pagination'=>false,
                 'query'=>$model->getPenerimaans(),

              ]),
              'columns'=>[
                ['class' => 'kartikgridSerialColumn'],


                 [
                   'attribute'=>'bulan',
                       'pageSummary' => 'Jumlah',
                     ],                      [
         'attribute' => 'price' ,
      //   'pageSummary' => 20 - 20 - $model->idDhs->idMatakuliah->sks,
         'pageSummary' =>(true),
           'value' => function ($model) {
         if($model)
            return  $model->price;
         }
     ],
               //      ['class' => 'kartikgridActionColumn'],

               //   'product',
                 // 'qty'
              ],
              'showPageSummary' => true,


          ])
          ?> Harga rata-rata barang adalah:

  <?php
  //$db= Yii::$app->db;
//  $command=$db->createCommand('Select * from penerimaan where id=408');
//  $penerimaan = $command->queryAll();

//  foreach ($penerimaan as $penerimaans) {
  //  echo $penerimaans['price'];
//  } echo "<br>";
//  $users = Yii::$app->db->createCommand('SELECT * FROM penerimaan where rm_code=id')->queryAll();
//$connection= Yii::$app->db;
//  $users= $connection->createCommand('SELECT * FROM penerimaan where rm_code=id')->execute();
//  var_dump($users);
//  $participantProvider = new ActiveDataProvider([
// 'query' => Penerimaan::find()->where('price',$model),
  //]);
//  $hasil = 14 /$participantProvider->getTotalCount();
//  echo $hasil;echo "</br>";
?>
  </div>

</div> 

Изображение

Ответ №1:

Это был уже заданный вопрос, и это был правильный ответ, но я думаю, что вы не в состоянии найти решение.

Теперь добавьте этот код на свою страницу просмотра и попробуйте

 <?php

use yiihelpersHtml;
use yiiwidgetsDetailView;
use kartikgridGridView;
use yiidataActiveDataProvider;
use backendmodelsPenerimaan;
use yiiwebApp;
/* @var $this yiiwebView */
/* @var $model backendmodelsTriwulan */

$this->title = $model->rm_code;
$this->params['breadcrumbs'][] = ['label' => 'Triwulan', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="triwulan-view">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>
        <?= Html::a('Update', ['update', 'id' => $model->rm_code], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Delete', ['delete', 'id' => $model->rm_code], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?>
    </p>

    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'rm_code',
            'deskripsi_barang',
        ],
    ]) ?>
 <?php
    $myAverage = 0;
    $myTot  =0;
    $myCnt = 0;
    $data = $dataProvider->getModels();

    foreach ($data as $key => $value) {
        $myTot  = $value['price'];
        $myCnt  ;
    }
    if ($myCnt>0){  
      $myAverage = $myTot/$myCnt;
    }
   echo $myAverage;  // your average displayed herre, you can place it wherever you want.
      ?>

       <?= GridView::widget([
              'dataProvider'=>new yiidataActiveDataProvider([

                 'pagination'=>false,
                 'query'=>$model->getPenerimaans(),

              ]),
              'columns'=>[
                ['class' => 'kartikgridSerialColumn'],


                 [
                   'attribute'=>'bulan',
                       'pageSummary' => 'Jumlah',
                ],                     
               [
                'attribute' => 'price' ,
                'pageSummary' =>(true),
                'value' => function ($model) {
                        if($model)
                         return  $model->price;
                        }
               ],

            ],
              'showPageSummary' => true,
         ])
      ?> 
   </div>
</div>
 

Комментарии:

1. Спасибо @Nitin, это было РЕШЕНО!! мне жаль раньше, потому что я не совсем понимаю. Но теперь я знаю, куда мне нужно поместить свой код, спасибо!