やること
同じ日付で売り上げが異なるレコードが複数あるので、重複日の売り上げ高を合計して日付の重複を削除した新しい配列を作る。
//DBからリストを取得。日付の早い順に並び替え
$dates = List::orderBy('date','asc')->get();
//初期設定
$count = $dates->count(); //ループの基準になるレコード総数の取得
$sum_sales = 0; //日付合計の初期化
$date = $dates[0]->history_date; //基準日に初期値を設定
$sales_days = []; //出力用の配列初期化
//集計
for ($i=0; $i < $count; $i++) {
//日付と売上を一時保存
$tmp_date = $dates[$i]->history_date;
$tmp_sales = intval($dates[$i]->sales);
//同一日、または最終レコードか確認
if ($tmp_date != $date or $i == $count - 1) {
//異なる日付だったら出力配列に格納。ついでにcarbonでフォーマット
$sales_days[] = [$date->format('Y/n/j'),$sum_sales];
//基準日、合計の初期化
$date = $tmp_date;
$sum_sales = $tmp_sales;
} else {
//同一日だったら集計
$sum_sales += $tmp_sales;
}
}