[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
avatar Pulseeey
@Pulseeey

13 Kontribusi 1 Poin

Diperbarui 6 tahun yang lalu

8 Jawaban:

waktu milih size pakai input apa?

avatar arkaanni
@arkaanni

29 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

pakai input select gan, sudah bisa masuk ke tabel cart. nah permasalahannya ane bingung di method list dan details untuk menampilkan isi sizenya.

avatar Pulseeey
@Pulseeey

13 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

Mungkin ada salah waktu ngerubah model productnya jadi array. Coba baca baca https://laravel.com/docs/5.4/eloquent-serialization

avatar arkaanni
@arkaanni

29 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

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.

avatar Pulseeey
@Pulseeey

13 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

coba var_dump() atau dd() $order['detail']['size'] isinya apa?

avatar arkaanni
@arkaanni

29 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

$order['detail']['size'] itu salah gan itu merujuk ke size yg ada pada tabel products bukan di cart 'detail' => $product->toArray().

avatar Pulseeey
@Pulseeey

13 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

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

avatar arkaanni
@arkaanni

29 Kontribusi 15 Poin

Dipost 6 tahun yang lalu

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.

avatar Pulseeey
@Pulseeey

13 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban