Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lấy bản ghi nếu Count bằng 0 trong Laravel

MySQL sẽ không điền vào những tháng không có sẵn, nó sẽ chỉ nhóm theo những gì bạn có sẵn và sau đó cung cấp cho bạn những kết quả đó.

Những gì bạn có thể làm là sử dụng DatePeriodCollection của Laravel lớp:

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

Xin lưu ý rằng tôi đã cập nhật monthNum trong truy vấn vì nó sẽ được định dạng lại sau này.

Ngoài ra, bạn nên sử dụng các thẻ thô của phiến ({!! !!} ) cho cái này là {{ $dat->totalbook }} sẽ hoạt động hoàn toàn tốt.

Hy vọng điều này sẽ hữu ích!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xuất cơ sở dữ liệu MySQL / MariaDB

  2. Cách tạo MySQL máy chủ liên kết

  3. CHỌN hàng theo DATEPART ()

  4. Mối quan hệ bảng cho các kiểu con

  5. nhận mysql_insert_id () trong khi sử dụng CẬP NHẬT KHÓA DUPLICATE với PHP