MySQL不会填写不可用的月份,它只会根据可用的内容进行分组,然后为您提供这些结果。
您可以做的是使用
DatePeriodLaravel的
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 = CarbonCarbon::parse($item->monthNum); return $item;});$periods = new DatePeriod($results->min('monthNum'), CarbonCarbonInterval::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 }}绝对可以正常工作。希望这可以帮助!



