Php 在yii2中循环高图表
为什么图表循环不符合标准? 来源代码: $model=Kriteria::find()->all()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();
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
],
]);
}