Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać rekord, jeśli Count wynosi zero w Laravel?

MySQL nie wypełni niedostępnych miesięcy, po prostu pogrupuje według tego, co masz dostępne, a następnie poda te wyniki.

Możesz użyć DatePeriod i Collection Laravela klasa:

$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));

Pamiętaj, że zaktualizowałem monthNum w zapytaniu, ponieważ zostanie ono sformatowane później.

Powinieneś także użyć tagów blade raw ({!! !!} ) dla tego jako {{ $dat->totalbook }} powinien działać absolutnie dobrze.

Mam nadzieję, że to pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz kolumnę z nazwą słowa kluczowego

  2. Jak importować / przywracać tabele MySql za pomocą PHP

  3. Pobieranie PDO nic nie zwraca

  4. Jak uruchomić skrypt SQL w MySQL?

  5. Jak naprawić MySql:zbyt duży rozmiar kolumny indeksu (migracja Laravel)