fro*_*man 3 javascript php jquery laravel morris.js
我正在尝试创建一个显示每月数据的 morrisJS 折线图。所以我每个月都会得到这样的数据:
$intakes = Intakes::whereYear('created_at', '=', 2018)
->orWhere(function ($query) {
$query->whereMonth('created_at', '=', 1)
->whereMonth('created_at', '=', 2)
->whereMonth('created_at', '=', 3)
->whereMonth('created_at', '=', 4)
->whereMonth('created_at', '=', 5)
->whereMonth('created_at', '=', 6)
->whereMonth('created_at', '=', 7)
->whereMonth('created_at', '=', 8)
->whereMonth('created_at', '=', 9)
->whereMonth('created_at', '=', 10)
->whereMonth('created_at', '=', 11)
->whereMonth('created_at', '=', 12);
})
->get();
Run Code Online (Sandbox Code Playgroud)
但这将返回从第 1 个月到第 12 个月范围内的所有记录。但我想要的是每月的数据,除了像这样创建多个变量之外,这是否可以实现?
$intakesMonth1 = Intakes::whereYear('created_at', '=', 2018)
->whereMonth('created_at', '=', 1)
->get();
$intakesMonth2 = Intakes::whereYear('created_at', '=', 2018)
->whereMonth('created_at', '=', 2)
->get();
Run Code Online (Sandbox Code Playgroud)
我希望我足够清楚并且有人知道更好的解决方案。
如果您想要 Eloquent 解决方案,请使用whereMonth():
for($i = 1; $i < 13; $++) {
$intakes[$i] = Intakes::whereMonth('created_at', $i)->get();
}
Run Code Online (Sandbox Code Playgroud)
您还可以获取当年的所有摄入量,然后使用where()Laravel Collections 方法仅获取一个月的摄入量:
$oneMonthData = $collection->where('created_at', '>', Carbon::parse($someDateString)->startOfMonth())->where('created_at', '<', Carbon::parse($someDateString)->endOfMonth());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |