Laravel если использовать wherebetwheen, данные не показывают все

#laravel #eloquent

#laravel #красноречивый

Вопрос:

Если я использую whereBetween, то все данные не отображаются как [image1], но если не использовать, данные показывают все. Я хочу использовать whereBetween, и данные могут отображать все, как [image2]

MyController

 $tanggal= $request->reservation;
              $date= explode('-', $tanggal);
              $start=Carbon::parse($date[0])->format('Y-m-d') ;
              $end=Carbon::parse($date[1])->format('Y-m-d') ;

              
                $pemakaian   = DB::table('tb_alat')
                              ->leftJoin('tb_bbms','tb_alat.id_alat','=','tb_bbms.id_alat')
                              ->select('tb_alat.id_alat','tb_alat.nama_alat',DB::raw('SUM(tb_bbms.bbm) as bbm'),DB::raw('SUM(tb_bbms.tarif) as tarif'),DB::raw('SUM(tb_bbms.jam_operasi) as jam'))
                              ->whereBetween('created_at', [$start, $end])
                              ->groupBy('tb_alat.id_alat')
                              ->get();

              
                               return view('page.laporanpdf.sumarypdf', compact('pemakaian', 'start','end'));
 

Просмотр блейда

 <table width="100%" class="table-hover table-bordered">
    <thead>
        <tr>
            <th>No</th>
            <th>Nama Alat</th>
            <th>Jam Operasi</th>
            <th>Jumlah Pemakaian (Liter)</th>
            <th>Rata-Rata (Liter)</th>
            <th>Biaya</th>
            
                    
        </tr>
    </thead>
    <tbody>
        @php $no = 1; @endphp
       @foreach($pemakaian as $list)
          
            <tr>
              <td>{{$no  }}</td>
              <td>{{$list->nama_alat}}</td>
              <td>{{$list->jam}}</td>
              <td>{{$list->bbm}}</td>
              <td>{{$list->bbm}}</td>
              <td>{{format_uang($list->tarif)}}</td>
            </tr>
            @endforeach
    </tbody>
    <tfoot>
        <tr>
            <td colspan="5">Total</td>
            
        </tr>
    </tfoot>
</table>
 

изображение 1

No Nama Alat Jam Operasi Jumlah Pemakaian (Liter) Rata-Rata (литр) Biaya

1 FD 323988 79 79 Rp. 869.000

2 RG 0 80 80 Rp. 624.000

3 RG 1 87 87 Rp. 678.600

4 GENSET -7527 89 89 Rp. 0

Итого

и я хочу, чтобы данные отображали все, как здесь

изображение 2

Комментарии:

1. Попробуйте что-нибудь вроде этого whereBetween(DB::raw(‘DATE(created_at)’), array($start, $end))->get(); , или вы также можете использовать Carbon

2. здесь whereBetween принимает все данные, созданные между заданными вами временными рамками. что не работает ожидаемо??

Ответ №1:

Вы конвертируете запрос $start amp; $end в поле даты?

если нет.

Вы должны преобразовать его в поле даты.

Пример кода

  $start = date('Y-m-d',strtotime($start));
 $end = date('Y-m-d',strtotime($end));
 

Надеюсь, это будет полезно.