Postingan lainnya
[Help] ukuran tidak sesuai dengan yang user pilih
maaf kalau judulnya ngawur, saya mencoba membuat project ecommerce. saya mengalami kendala ketika user memilih ukuran baju. pada tampilan cart panel, ukuran tidak sesuai dengan yang user pilih. jadi ukuran bajunya default pada saat admin membuat produk. jadi saya ingin menampilkan ukuran baju yang berada pada tabel cart beradasarkan pilihan user. mohon bantuannya gan, sebelumnya terima kasih..
contoh kesalahanya : ketika user memilih produk dengan size L di produk detail pada cart panel malah tampilnya M nilai default inputan admin pada saat membuat produk.
public function lists()
{
if(Auth::check()) {
return Cart::where('user_id', Auth::user()->user_id)->lists('quantity', 'product_id');
} else {
return $this->request->cookie('cart');
}
}
public function details()
{
$result = [];
if ($this->totalProduct() > 0) {
foreach ($this->lists() as $id => $quantity) {
$product = Product::find($id);
array_push($result, [
'product_id' => $id,
'detail' => $product->toArray(),
'quantity' => $quantity,
'subtotal' => $product->price * $quantity
]);
}
}
return $result;
}
Tampilan
@foreach($cart->details() as $order)
<tr>
<td data-th="Produk">{{ $order['detail']['name'] }} <br />Ukuran : {{ $order['detail']['size'] }}</td>
<td data-th="Jumlah" class="text-center">{{ $order['quantity'] }}</td>
<td data-th="Harga" class="text-right">Rp.{{ number_format($order['detail']['price'], 2) }}
</td>
</tr>
<tr>
<td data-th="Subtotal">Subtotal</td>
<td data-th="Subtotal" class="text-right" colspan="2">Rp.{{ number_format($order['subtotal'], 2) }}
</td>
</tr>
@endforeach
8 Jawaban:
pakai input select gan, sudah bisa masuk ke tabel cart. nah permasalahannya ane bingung di method list dan details untuk menampilkan isi sizenya.
Mungkin ada salah waktu ngerubah model productnya jadi array. Coba baca baca https://laravel.com/docs/5.4/eloquent-serialization
kaya dibawah ini bukan gan?
'detail' => $product->toArray()
di product semua tampil dengan baik cuma masalahnya di sizenya yg ada pada tabel cart ga sesuai input user. saya mencoba menggunakan orWhere jadi seperti ini:
public function lists()
{
if(Auth::check()) {
return Cart::where('user_id', Auth::user()->user_id)->lists('quantity', 'product_id')->orWhere('user_id', Auth::user()->user_id)->lists('quantity', 'product_id');
} else {
return $this->request->cookie('cart');
}
}
malah error method orWhere tidak ada.
ane tidak tahu bagaimana caranya menampilkan 2 field yaitu size dan quantity sesuai dengan product_id pada table cart. ane baru bisa menampilkan quantity berdasarkan product_id pada table cart.
ane coba buat variable size pada method details seperti ini.
public function details()
{
$result = [];
if ($this->totalProduct() > 0) {
foreach ($this->lists() as $id => $quantity) {
$product = Product::find($id);
$size = Cart::where('user_id', Auth::user()->user_id)->lists('size');
array_push($result, [
'product_id' => $id,
'detail' => $product->toArray(),
'quantity' => $quantity,
'size' => $size,
'subtotal' => $product->price * $quantity
]);
}
}
return $result;
}
malah ditampilannya semua size dari tabel cart tampil dalam satu produk tidak sama kaya di jumlah produk.
Jawaban Terpilih
coba var_dump() atau dd() $order['detail']['size'] isinya apa?
$order['detail']['size'] itu salah gan itu merujuk ke size yg ada pada tabel products bukan di cart 'detail' => $product->toArray().
kalo gitu di bawahnya inisialisasi variabel $size dicoba cek :
if ($product->size == $size) {
$sizeDiCart = $size;
}
array_push($result, [
'product_id' => $id,
'detail' => $product->toArray(),
'quantity' => $quantity,
'size' => $sizeDiCart,
'subtotal' => $product->price * $quantity
]);
Kalau kaya di atas menyamakan yg ada di table product ya gan? Yg ane pengen nilai record di field size yg ada pada table cart tampil sesuai dengan product_id pada table cart pada saat user memilih produk sesuai size yg dipilih.