MySQL उन महीनों में नहीं भरेगा जो उपलब्ध नहीं हैं, यह केवल आपके पास उपलब्ध चीज़ों के आधार पर समूहित करेगा और फिर आपको वे परिणाम देगा।
आप क्या कर सकते हैं DatePeriod
. का उपयोग करें और लारवेल का Collection
कक्षा:
$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));
कृपया ध्यान दें कि मैंने monthNum
को अपडेट कर दिया है क्वेरी में क्योंकि इसे बाद में पुन:स्वरूपित किया जाएगा।
साथ ही, आपको ब्लेड कच्चे टैग का उपयोग करना चाहिए ({!! !!}
) इसके लिए {{ $dat->totalbook }}
. के रूप में बिल्कुल ठीक काम करना चाहिए।
आशा है कि यह मदद करेगा!