2015-06-22 38 views
2

我想在cakephp中使用高圖插件。我安裝了它,我可以運行插件附帶的所有演示。 我想在我自己的控制器中使用它,並將其中一個示例作爲實現指南。
如果我在我的控制器中有以下代碼,它不起作用,即highchart不顯示任何輸入值。使用MySQL數據作爲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 我似乎無法弄清數組$ chartData1的「mysql」版本與$ chartData1的「手動定義」版本之間的區別。我錯過了什麼?

+0

您需要輸出並檢查$ chartData1的內容,因爲它必須包含您期望的內容。 – SteveP

回答

0

經過大量的檢查後,我最終發現了問題。輔助程序中的Cake插件需要chartData1數組中的整數(或實數)。所以簡單加入以下幾行:

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

終於解決了我的問題。 感謝您的幫助