1 回答
TA贡献1895条经验 获得超7个赞
您可以使用 array_map 和 range 来使此代码更短:
public function monthlyRegisteredUsers()
{
return array_map(function($month){
return User::whereMonth('created_at', $month)->whereYear('created_at', Carbon::now()->format('Y'))->count();
}, range(1,12))
}
我认为您可以使用 group by 来运行一个查询,让我通过更好的查询来更新我的答案。
public function monthlyRegisteredUsers()
{
$counts = User::select(DB::raw('MONTH(created_at) month, count(*) as count'))
->whereYear('created_at', Carbon::now()->format('Y'))
->groupBy(DB::raw('MONTH(created_at)'))
->pluck('count', 'month')
->toArray();
return array_map(function($month) use ($counts){
return Arr::get($counts, $month, 0);
}, range(1,12));
}
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报