我使用created_at
列,在一个查询中检索数据:
$data: [
1 : [
//datas for january
],
2 : [
//datas for february
],
//etc.
]
$data = User::query()
->whereYear('created_at', now()->year - 1)
->get(function ($q){
return groupBy(function ($q){
return Carbon::parse($q->created_at)->format('m');
});
});
但是我收到此错误:
stripos()期望参数1为字符串,给定对象
有人可以帮助我进行适当的查询吗?
答案 0 :(得分:1)
具有相同变量名的嵌套闭包函数非常令人困惑,您可以在此处简化操作
在groupBy
之后的集合上调用get
方法,而不是仅显然接受列名的构建器
$data = User::query()
->whereYear('created_at', now()->year - 1)
->get()
->groupBy(function ($q) {
return Carbon::parse($q->created_at)->format('m');
});
请参见Docs
答案 1 :(得分:0)
您应该使用sql方法 MONTH()从日期中提取月份,然后使用groubby。
User::query()->select('created_at', DB::raw('MONTH(created_at) month'))
->whereYear('created_at', now()->subYear())
->groupby('month')
->get();