$results = Result::orderBy("created_at", "asc")
->whereBetween('created_at', array($from, $to))
->get()
->groupBy(function($date) use($interval) {
return Carbon::parse($date->created_at)->format($interval);
});
ユーザーがフロントエンドで選択した内容に応じて、結果を日/週/月にグループ化しようとしています。Laravel groupBy Carbonを使用してグループ化された配列の長さが予期せず制限される
上記の結果はグループ単位で返されますが、奇妙な制限が加えられます。
私の$from/$to
の期間は2年間です。
$interval
が「d」の場合、31グループ(1か月で31日)だけが返されます。したがって、最初の31日間をグループとして返すだけです。
$interval
が「W」の場合、52グループ(1年に52週間)だけが返されます。だから最初の52週間だけをグループとして返すべきだ。
$interval
が「m」の場合、12グループ(1年に12カ月)だけが返されます。だから最初の12ヶ月だけをグループとして返すべきです。
グループ化された結果の数にこれらの制限が実装されている理由について説明できません。多くの人がこの方法を使って日付でグループ化しているようですが、同じ問題を参照している他の人は見つけられません。
12か月のグループには両方の年の結果がないか、代わりに24か月のグループが予想されますか? – apokryfos
私は24のグループがあると思っていますが、それは12に制限しています。 –