MySQL tidak akan mengisi bulan-bulan yang tidak tersedia, ia hanya akan mengelompokkan berdasarkan apa yang Anda miliki dan kemudian memberikan hasil tersebut kepada Anda.
Yang dapat Anda lakukan adalah menggunakan DatePeriod
dan Collection
Laravel kelas:
$results = DB::table('bookings')
->selectRaw("DATE_FORMAT(created_At,'%Y-%m-01') as monthNum, count(*) as totalbook")
->orderBy('monthNum')
->groupBy('monthNum')
->get();
$results = collect($results)->keyBy('monthNum')->map(function ($item) {
$item->monthNum = \Carbon\Carbon::parse($item->monthNum);
return $item;
});
$periods = new DatePeriod($results->min('monthNum'), \Carbon\CarbonInterval::month(), $results->max('monthNum')->addMonth());
$graph = array_map(function ($period) use ($results) {
$month = $period->format('Y-m-d');
return (object)[
'monthNum' => $period->format('M Y'),
'totalbook' => $results->has($month) ? $results->get($month)->totalbook : 0,
];
}, iterator_to_array($periods));
Harap dicatat saya telah memperbarui monthNum
dalam kueri karena akan diformat ulang nanti.
Selain itu, Anda harus menggunakan tag mentah blade ({!! !!}
) untuk ini sebagai {{ $dat->totalbook }}
harus bekerja dengan baik.
Semoga ini bisa membantu!