このソリューションは私にとってうまくいきました。最初に、日付をキーとして設定し、カウント値を0に設定して、時間範囲内のすべての日付を含む配列を作成し、次にDBでのクエリ後の値を、同じ配列のカウントで置き換えました。クエリからの値:
$period = new DatePeriod( new DateTime($from), new DateInterval('P1D'), new DateTime($to));
$dbData = [];
foreach($period as $date){
$range[$date->format("Y-m-d")] = 0;
}
$data = DB::table($request['option'])
->select(DB::raw('DATE(created_at) as time'), DB::raw('count(*) as count'))
->whereDate('created_at', '>=', date($from).' 00:00:00')
->whereDate('created_at', '<=', date($to).' 00:00:00')
->groupBy('time')
->get();
foreach($data as $val){
$dbData[$val->time] = $val->count;
}
$data = array_replace($range, $dbData);
}
return json_encode($data);