Используйте данные 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'];
}
наконец-то решил мою проблему. В любом случае спасибо за вашу помощь