Как передать данные базы данных и отобразить их в yii2 highCharts? - PullRequest
0 голосов
/ 28 февраля 2020

У меня установлена ​​ miloschuman \ highcharts \ Highcharts , веб-сайт: https://www.yiiframework.com/extension/yii2-highcharts-widget. У меня есть база данных со столбцами таблицы lme_price и lme_name , в которой я хочу отобразить цену меди в старших графиках. Я использую PHP.

Ниже приведен мой код, который я сделал. Это код в моих моделях. Я создаю функцию stati c с запросом внутри, чтобы найти нужные мне данные из базы данных.

public static function getCopperPrice()
{
    $getCopperPrices = Lme::find()
                    ->select('lme_price')
                    ->where(['lme_name' => 'LME Copper'])
                    ->all();
    return $getCopperPrices;
}

Вот мой код в представлении. У меня есть представление таблицы в представлении, которое показывает все данные из базы данных.

<div class="lme_index">
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    //  'searchModel'=> $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'label'=> 'DATE',
            'attribute' => 'lme_title',
        ],
        [
            'label'=> 'MATERIAL',
            'attribute'=> 'lme_name',
        ],   
        [
            'label'=> 'PRICE (US$)',
            'attribute'=> 'lme_price',
        ],

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

Вот код для графика старших диаграмм.

<div class = "graph">
    <?= Highcharts::widget([
        'options' => [
            'title' => ['text' => 'Copper Price'],
            'xAxis' => [
                'categories' => []
            ],
            'yAxis' => [
                'title' => ['text' => 'Price $US']
            ],
            'plotOption' => [
            'series' => [
                ['name' => 'Copper', 
                'data' => [lme::getCopperPrices()]],
             ]
            ]
        ]
    ]);?>

Я хочу отображать только 1 цену материала в старших чартах. Я вызываю функцию из модели внутри серии, но график ничего не показывает на ней. Кодировка там не показала мне никакой ошибки.

Может кто-нибудь помочь мне или сказать мне, как решить эту проблему? Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Диаграмма требует integer значений для отображения

public static function getCopperPrice()
{
     $cooperPrices = [];

     $copperPriceList = Lme::find()
         ->select('lme_price')
         ->where(['lme_name' => 'LME Copper'])
         ->column();

    foreach($copperPriceList as $price) {
        $cooperPrices[] = (int) price;
    }

     return $cooperPrices;
}
...