2015-08-28 113 views
0

我有4個不同的模型,當然還有4個不同的數據庫表。我需要製作一個折線圖,顯示每個表格在特定的日子裏有多少新記錄。該圖表必須顯示當前月份的記錄,但僅顯示已創建至少一條記錄的日期。我目前有這樣的圖表與jQuery,但我不知道,如何製作一個數組,傳遞到圖表。數組應該是這樣的(除了,我有4種類型的記錄,所以這將是(A,B,C,d):Laravel jQuery折線圖

data: [ 
        { date: '07-31-2015', a: 6, b: 90 }, 
        { date: '08-01-2015', a: 0, b: 90 }, 
        { date: '08-02-2015', a: 87, b: 90 }, 
        { date: '08-03-2015', a: 95, b: 90 }, 
        { date: '08-04-2015', a: 86, b: 90 }, 
        { date: '08-05-2015', a: 43, b: 90 }, 
        { date: '08-06-2015', a: 25, b: 90 }, 
        { date: '08-07-2015', a: 0, b: 90 }, 

     ] 
+0

源數組是什麼樣的? – raduation

+0

你用什麼樣的插件來製作折線圖以及數組應該是什麼樣子? –

+0

我使用morris.js插件,數組應該是這樣的,以當月,其中至少有一個紀錄是由所有的日子: 數據:[ \t \t \t \t \t {日期:'07 -31 -2015',a:6,b:90,c:55,d:65}, \t \t \t \t \t {date:'08- 01-2015',a:0,b:90,c:55, d:65} \t \t \t \t \t {date:'08 -02-2015',a:87,b:90,c: – Lynce

回答

1

你可以使用jQuery觸發,例如,一個AJAX GET (或POST ...)請求($.get())到從數據庫獲取數據的服務器(Laravel),將其存儲在需要的數組結構中並將其返回給客戶端;然後您可以直接從$.get()實例化並填充圖表回調函數 在PHP中,您可以像往常一樣構建陣列,例如在foreach週期內,而不是在腳本結尾將其返回給客戶端。這樣的:

CLIENT端(JavaScript)

$(function(){ 
    $.get("myPHPresource",{},function(AJAXdata){ 
     new Morris.Line({ 
      [...] 
      data: AJAXdata, 
      [...] 
     }); 
    }); 
}); 

服務器端(由myPHPresource指出php文件)

<?php 
$ret=array(); 
$data=fetch_DB_data(); 
foreach($data as $d){ 
    $current_data=array(); 
    //the following three lines are hypothetical and depend on how data is returned from your fetch_DB_data() function 
    $current_data["date"]=$d["date"]; 
    $current_data["a"]=$d["a"]; 
    $current_data["b"]=$d["b"]; 
    $ret[]=$current_data; 
} 
exit($ret); 
?> 

與至少一個記錄只顯示天,你既可以在工作數據庫查詢級別(可能更好:使用COUNTGROUP BY,其中count(records)>0)或PHP級別:在foreach內部,您可以避免將$current_data推送到$ret如果記錄數是<=0