テーブル例
たとえば下記のようなデータベーステーブルがあるとします。
モデル名はLog
として、日毎にカウント(count)の合計を出したいとします。
id | INT |
---|---|
count | INT |
created_at | TIMESTANP |
月別の集計
2019年の月毎に集計したい場合、まずはwhereYear
で2019年を検索します。
groupBy
でformat('m')
にすると月別にまとまるので、最後にmap
でsum
します。
Log::whereYear('start_at', 2019) ->orderBy('created_at') ->get() ->groupBy(function ($row) { return $row->created_at->format('m'); }) ->map(function ($day) { return $day->sum('count'); });
日別の集計
日別の場合whereMonth
で集計したい月を追加します。
groupBy
の部分を日のd
に変更するだけです。
2019年9月を日別に集計したい場合は次のようになります。
Log::whereYear('created_at', 2019) ->whereMonth('created_at', 9) ->orderBy('created_at') ->get() ->groupBy(function ($row) { return $row->created_at->format('d'); }) ->map(function ($day) { return $day->sum('count'); });