MySQL kommer inte att fylla i de månader som inte är tillgängliga, det kommer helt enkelt att gruppera efter vad du har tillgängligt och sedan ge dig dessa resultat.
Vad du kan göra är att använda DatePeriod
och Laravels Collection
klass:
$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));
Observera att jag har uppdaterat monthNum
i frågan eftersom den kommer att formateras om senare.
Du bör också behöva använda bladets råtaggar ({!! !!}
) för detta som {{ $dat->totalbook }}
borde fungera helt okej.
Hoppas detta hjälper!