2015-08-28 108 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