Php 在Laravel中创建莫里斯图表
所以,在一些教程之后,我能够建立一个莫里斯图表,这就是我到目前为止得出的结论Php 在Laravel中创建莫里斯图表,php,mysql,laravel,Php,Mysql,Laravel,所以,在一些教程之后,我能够建立一个莫里斯图表,这就是我到目前为止得出的结论 $range = \Carbon\Carbon::now()->subDays(30); $stats = DB::table('tickets') ->where('created_at', '>=', $range) ->groupBy('date') ->orderBy('date', 'ASC') ->get(
$range = \Carbon\Carbon::now()->subDays(30);
$stats = DB::table('tickets')
->where('created_at', '>=', $range)
->groupBy('date')
->orderBy('date', 'ASC')
->get([
DB::raw('Date(created_at) as date'),
DB::raw('COUNT(*) as value')
])
->toJSON();
输出
"[{"date":"2018-11-10","value":1},{"date":"2018-11-11","value":1}]"
问题是,我正试图通过几个月而不是每天获得结果
js代码
Morris.Area({
element: 'morris-area-chart'
, data: data
, xkey: 'date'
, ykeys: ['status']
});
票务表
id|phone_model |cus_name |issue |notes |created_at |updated_at |status
预期产出
[{"date":"11","tickets":2,"status":1},{"date":"11","tickets":1,"status":2},
{"date":"10","tickets":3,"status":1},{"date":"10","tickets":1,"status":3},]
我尝试了更多的方法来获得基于月份和票证状态的结果,但没有运气
感谢您的帮助。您可以使用此查询:
$result_arr = \DB::select("SELECT DATE_FORMAT(created_at, '%m') date, status, COUNT(*) count FROM tickets GROUP BY date, status ORDER BY date DESC");
return collect($result_arr)->toJson();
例如,它输出这样一个结果(输出在mysql控制台中):
+----+----+
|日期|状态|计数|
+------+--------+-------+
| 12 | 1 | 1 |
| 12 | 2 | 3 |
| 12 | 4 | 1 |
| 12 | 10 | 7 |
| 11 | 1 | 1 |
| 11 | 2 | 1 |
| 11 | 4 | 1 |
| 10 | 1 | 3 |
| 10 | 2 | 2 |
| 10 | 3 | 1 |
| 10 | 4 | 2 |
| 09 | 1 | 2 |
| 09 | 2 | 7 |
| 09 | 3 | 5 |
| 08 | 1 | 1 |
| 08 | 2 | 1 |
| 08 | 12 | 1 |
| 07 | 1 | 4 |
| 06 | 1 | 1 |
| 06 | 2 | 12 |
| 06 | 3 | 2 |
| 05 | 1 | 1 |
| 05 | 2 | 8 |
| 05 | 11 | 1 |
| 04 | 1 | 2 |
| 04 | 2 | 8 |
| 04 | 10 | 1 |
| 03 | 1 | 2 |
| 02 | 1 | 2 |
| 02 | 2 | 26 |
| 02 | 3 | 1 |
| 02 | 11 | 2 |
| 02 | 12 | 1 |
| 01 | 2 | 21 |
| 01 | 3 | 8 |
| 01 | 10 | 6 |
+------+--------+-------+
集合中有36行(0.00秒)
如果您想按月份显示,那么您可能应该在输出中输入月份名称,而不是整个日期。