:::

15-8 根據不同情況來進行新增品項或累加品項

  1. 按下「加入購物車」的按鈕,理論上就是把購物項目加入購物車而已。但是如果同一個商品按好幾次呢?難道要新增好幾筆相同資料?這顯然和一般常理不符。
  2. 通常,按一下就是加入購物車(如果購物車沒有該品項的話);若是再按一次,同常就是相同品項上,將數量再累積上去。
  3. 這個動作我們在控制器中來處理,因此,請開啟\專案\app\Http\Controllers\CartController.php編輯之:
    public function store(CartRequest $request)
    {
        // 從資料庫中查詢該商品是否已經在購物車中,如果存在則直接疊加商品數量
        if ($cart = $request->user()->carts()->where('product_id', $request->product_id)->first()) {
            $cart->update([
                'amount' => $cart->amount + $request->amount,
            ]);
        } else {
            // 否則創建一個新的購物車記錄
            Cart::create($request->all());
        }
        return [];
    }

     

    1. $request->user()就是目前送出此請求的使用者資料

    2. $request->user()->carts()則是因為User模型中,我們有設定carts()關聯,可以順便帶出目前這個使用者購物車裡所有內容

    3. $request->user()->carts()->where('product_id', $request->product_id)則是將此使用者的購物車品項做利用商品編號篩選,只列出目前這個產品相關的資料即可。

    4. $request->user()->carts()->where('product_id', $request->product_id)->first()則是列出單筆資料,詳情可參考:https://learnku.com/docs/laravel/5.8/eloquent/3931

  4. 接著把原有資料表內容清空以便觀察是否運作正常:
  5. 按第一次加入購物車時:
  6. 再按一次相同品項的加入購物車按鈕,並重新整理畫面,就看到數量已經累加囉!
  7. 加入購物車的功能已經大功告成!

 

到GitHub觀看此單元程式異動  


:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D43%26tbdsn%3D1446

計數器

今天: 2223222322232223
昨天: 1988198819881988
總計: 7389114738911473891147389114738911473891147389114