sql >> Databasteknik >  >> RDS >> Mysql

Hur man får posten om Count är noll i Laravel

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!



  1. mysql:anslutningen nekades när man försökte ansluta till localhost med fjärr-IP

  2. Första offentliga förhandsvisning av SQL Server 2019:CTP 2.0

  3. Hur du säkrar din PostgreSQL-databas - 10 tips

  4. Hur man använder semantisk sökning i SQL Server