1 回答

TA貢獻1895條經(jīng)驗 獲得超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 關注
- 126 瀏覽
添加回答
舉報