Php 在yii2中循环高图表

Php 在yii2中循环高图表,php,sql,yii2,Php,Sql,Yii2,为什么图表循环不符合标准? 来源代码: $model=Kriteria::find()->all() 这是控制器中的代码: $model = Kriteria::find()->all(); foreach ($model as $kriteria) { $data_iku = Yii::$app->db->createCommand(' select DISTINCT iku.id as idiku,iku.na

为什么图表循环不符合标准? 来源代码:

$model=Kriteria::find()->all()


这是控制器中的代码:

$model = Kriteria::find()->all();
        foreach ($model as $kriteria) {

         $data_iku = Yii::$app->db->createCommand('
              select DISTINCT iku.id as idiku,iku.nama as nama,(sum(fi.nilai_user)over (partition by iku.id)) / (count(iku.id)over(partition by iku.id)) as hasil
                FROM erp_iku iku 
                join erp_indikator as ind on ind.iku_id = iku.id
                join form_indikator as fi on fi.indikator_id = ind.id
                where fi.spmi_id = 2 and iku.kriteria_id = "'.$kriteria['id'].'"
                GROUP by iku.id, ind.id,fi.id
                ')
          ->queryAll();

          foreach ($data_iku as $iku) {
              $b[]= ([
                'name' =>$iku['nama'], 
                'data' => array((int)$iku['hasil'])
              ]);

              }
          }
这是视图中的代码:

<?php 
             
            foreach($model as $kriteria) {

                echo "<h3>Kriteria ".$kriteria->urutan.": ".$kriteria->nama . "</h3>";

                 foreach ($data_iku as $iku) {
              
                  $b[] = [
                                'name' =>$iku['nama'], 
                                'data' =>[(int)$iku['hasil']]
                               
                            ];

              }

            echo HighCharts::widget([
                'clientOptions' => [
                    'chart' => [
                        'type' => 'bar',
                    ],
                    'title' => [
                        'text' => 'Kriteria',
                    ],
                    'yAxis' => [
                        'title' => [
                           'text' => 'Hasil',
                        ],
                    ],
                    'series' => $b

                ],
            ]);
}

在控制器集合数组中,使用关于kriteria的特定键:

$model = Kriteria::find()->all();
        foreach ($model as $kriteria) {

         $data_iku = Yii::$app->db->createCommand('
              select DISTINCT iku.id as idiku,iku.nama as nama,(sum(fi.nilai_user)over (partition by iku.id)) / (count(iku.id)over(partition by iku.id)) as hasil
                FROM erp_iku iku 
                join erp_indikator as ind on ind.iku_id = iku.id
                join form_indikator as fi on fi.indikator_id = ind.id
                where fi.spmi_id = 2 and iku.kriteria_id = "'.$kriteria['id'].'"
                GROUP by iku.id, ind.id,fi.id
                ')
          ->queryAll();

          foreach ($data_iku as $iku) {
              $b[$kriteria['id']][]= [ //here set array only for specific criteria
                'name' =>$iku['nama'], 
                'data' => [(int)$iku['hasil']]
              ];

              }
          }
在视图中,使用此键检查数组:

  <?php 
                 
     foreach($model as $kriteria) {
    
         echo "<h3>Kriteria ".$kriteria->urutan.": ".$kriteria->nama . "</h3>";
         $b = []; //set empty array if $data_iku[$kriteria->id] is not set
         if(isset($data_iku[$kriteria->id])){
             $b = $data_iku[$kriteria->id];
         }
    
         echo HighCharts::widget([
                  'clientOptions' => [
                        'chart' => [
                            'type' => 'bar',
                        ],
                        'title' => [
                            'text' => 'Kriteria',
                        ],
                        'yAxis' => [
                            'title' => [
                               'text' => 'Hasil',
                            ],
                        ],
                        'series' => $b
    
                    ],
                ]);
    }

你的问题是什么?你的目的是什么?我的问题是为什么我的循环图无法根据标准区分。我的目标是根据标准显示图表。在这里,您可以调用$data_iku。。请用完整完整的codeHi@Rendra编辑您的答案,您使用了
highcharts
标记,但问题似乎不在于图表,而在于数据和yii2。如果你对Highcharts有问题,那么请提供一个带有硬编码的示例数据的演示。哦,是的,对不起,我的标签中有一个错误。此代码已在运行,但循环数据时出错。我希望每个条件的数据都显示在图表上,但最后一个图表上的数据将所有条件显示在一个图表中。如何使用正确的代码显示每个标准的数据。
  <?php 
                 
     foreach($model as $kriteria) {
    
         echo "<h3>Kriteria ".$kriteria->urutan.": ".$kriteria->nama . "</h3>";
         $b = []; //set empty array if $data_iku[$kriteria->id] is not set
         if(isset($data_iku[$kriteria->id])){
             $b = $data_iku[$kriteria->id];
         }
    
         echo HighCharts::widget([
                  'clientOptions' => [
                        'chart' => [
                            'type' => 'bar',
                        ],
                        'title' => [
                            'text' => 'Kriteria',
                        ],
                        'yAxis' => [
                            'title' => [
                               'text' => 'Hasil',
                            ],
                        ],
                        'series' => $b
    
                    ],
                ]);
    }