#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>
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
Итого
и я хочу, чтобы данные отображали все, как здесь
Комментарии:
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));
Надеюсь, это будет полезно.