Используйте данные MySQL в качестве данных диаграммы для плагина CakePHP Highchart

Я хотел бы использовать плагин Highchart в CakePHP. Я установил его, и я могу запустить все демонстрации, которые идут с плагином. Я хотел бы использовать его в своем собственном контроллере и взял один из примеров в качестве руководства по реализации.
Если у меня есть следующий код в моем контроллере, он НЕ работает, то есть старшая диаграмма не отображает какие-либо входные значения.

    $resultStatistics = $this->Statistic->find("all", $params = array(  'fields' => 'new_students_total','recursive'    =>  -1) );
    $chartData1 = array();
    $chartData1 = Hash::extract($resultStatistics, '{n}.Statistic.new_students_total');

//  $chartData1 = array(0=>5, 1=>5, 2=>4, 3=>4);    
    $this->print_r2($chartData1);

    $chartName = 'Evolution of Actual Number of Students';
    $mychart = $this->Highcharts->create($chartName, 'line');

    $this->Highcharts->setChartParams($chartName, array(
                    'renderTo'              => 'linewrapper', // div to display chart inside
                    'chartWidth'            => 600,
                    'chartHeight'           => 500,
                    'chartMarginTop'        => 60,
                    'chartMarginLeft'       => 90,
                    'xAxisCategories'       => array('Jan', 'Feb', 'Mar', 'Apr'),


                    // autostep options
                 //   'enableAutoStep'      => TRUE
                        )
                );
    $series1 = $this->Highcharts->addChartSeries();
    $series1->addName('ABC')
            ->addData($chartData1);

    $mychart->addSeries($series1);
    $this->set(compact('chartName'));   

Результатом запроса к базе данных является простой массив с 4 целочисленными значениями.

Но если я раскомментирую строку 4: "$chartData1 = array(0=>5, 1=>5, 2=>4, 3=>4);", в основном определяя значения массива вручную, он работает, и Линейная диаграмма нарисована. Я использую Cakephp 2.4.3 и PHP 5.6. Я не могу понять разницу между "mysql" версией массива $ chartData1 и "определенной вручную" версией $chartData1. Что мне не хватает?

1 ответ

После долгих проверок я в итоге обнаружил проблему. Плагин Cake в помощнике ожидает целое число (или действительное число) в массиве chartData1. Так просто добавив следующие строки:

foreach ($resultStatistics as $result) {
    $chartData[] = (int) $result['Statistic']['new_students_total'];  
}

наконец-то решил мою проблему. В любом случае спасибо за вашу помощь

Другие вопросы по тегам