Postingan lainnya
Update database tapi dari array
Kasusnya kaya gini gan dari halaman seperti ini diterima sama cancel ane buat form berupa hidden untuk statusnya diterima atau gak, yang jadi masalah pas ane update ga bsa, dari pesan errornya karna ini array / collection bingung mau update yang mana.. gimana ya cara akalinnya ini pesan errornya :
ini viewnya :
<td>
@if ($reservation->status == 0)
<form action="reservation" method="post">
{{ csrf_field() }}
<input type="hidden" name="status" value="1">
<button type="submit" name="submit" class="btn btn-info">
<span class="glyphicon glyphicon-ok"></span>
Terima
</button>
</form>
<form action="reservation" method="post">
{{ csrf_field() }}
<input type="hidden" name="status" value="2">
<button type="submit" name="submit" class="btn btn-info">
<span class="glyphicon glyphicon-trash"></span>
Cancel
</button>
</form>
@elseif ($reservation->status == 1)
<span class="glyphicon glyphicon-ok"></span>
Diterima
@else
<span class="glyphicon glyphicon-trash"></span>
Dicancel
@endif
</td>
ini controllernya :
public function confirmation($id, Request $request)
{
$user = User::find($id);
$reservations = Reservation::whereHas('room', function ($query) use($id) {
$query->where('user_id', '=', $id);
})->get();
$reservations->status->update([
'status' => $status
]);
return view('reservation.show', [
'user' => $request->user,
'reservations' => $reservations
]);
}
mohon pencerahannya gann :D segala respon ane appreciated :D
9 Jawaban:
itu agan ngelempar, 'reservations' <- dengan plural
['reservation.show', [
'user' => $request->user,
'reservations' => $reservations
]](;
)
di view agan get $reservation?
kan foreach selalu plural dengan as singular, atau sebaliknya ini view table lengkapnya gan
@foreach ($reservations as $reservation)
<tr>
<td> {{ $reservation->start_date }} </td>
<td> {{ $reservation->end_date }} </td>
<td>
<a href="/room/{{ $reservation->room_id }}">
{{ $reservation->room->name }}
</a>
</td>
<td> Rp. {{ $reservation->room->price }} </td>
<td>
<?php
$start = date_create($reservation->start_date);
$end = date_create($reservation->end_date);
$interval = $start->diff($end)->format('%a');
$total = ($interval * $reservation->room->price);
?>
Rp. {{ $total }}
</td>
<td>
@if ( $reservation->user->fullname == null )
{{ $reservation->user->name }}
@else
{{ $reservation->user->fullname }}
@endif
</td>
<td> {{ $reservation->user->phone }} </td>
<td>
@if ($reservation->status == 0)
<form action="reservation" method="post">
{{ csrf_field() }}
<input type="hidden" name="status" value="1">
<button type="submit" name="submit" class="btn btn-info">
<span class="glyphicon glyphicon-ok"></span>
Terima
</button>
</form>
<form action="reservation" method="post">
{{ csrf_field() }}
<input type="hidden" name="status" value="2">
<button type="submit" name="submit" class="btn btn-info">
<span class="glyphicon glyphicon-trash"></span>
Cancel
</button>
</form>
@elseif ($reservation->status == 1)
<span class="glyphicon glyphicon-ok"></span>
Diterima
@else
<span class="glyphicon glyphicon-trash"></span>
Dicancel
@endif
</td>
</tr>
@endforeach
ohh ternyata udah di foreach, nahh coba di dd aja dulu $reservations-nya biar tau isinya
di dd bisa gan keliatan isinya semua reservasi dari semua room yg dimiliki user yg terautentikasi, tapi pas mau update nya itu gan, ga bsa, ane baca2 di stackoverflow di looping arraynya ada indexrow klo ga salah jadi didefinisiin pas perulangan itu perulangan keberapa nantinya klo mau update bsa tau array keberapa tapi msh blm paham mau cari2 lg ane, info2 klo tau ya gan :D
ini dd nya gann
ini isi dari tabel reservasi, dari function show nya..
ane dapet sedikit pencerahan jadi katanya di form nya name="status[$i->id]" , jadi status[array dari perulangan id nya] nanti pas update nentuin id keberapa dan statusnya jadi apa.. tapi msh blm tau caranya
ini dd hasil $request->status array dari status 3 isinya 2
code yg mendekatinya kira2.. tabel reservasi dimana id nya array dari status -> update ( status => isi array status )
mohon pencerahannya gannn (Y)
Jawaban Terpilih
Akhirnya sudah solveddd ternyata pakai foreach as key => value thanks yg udah respon :D
ini codenya
foreach ($request->status as $key => $data ) {
$input = [
'status' => $data,
];
DB::table('reservations')->where('id',$key)->update($input);
}