:::
15-8 根據不同情況來進行新增品項或累加品項
- 按下「加入購物車」的按鈕,理論上就是把購物項目加入購物車而已。但是如果同一個商品按好幾次呢?難道要新增好幾筆相同資料?這顯然和一般常理不符。
- 通常,按一下就是加入購物車(如果購物車沒有該品項的話);若是再按一次,同常就是相同品項上,將數量再累積上去。
- 這個動作我們在控制器中來處理,因此,請開啟
\專案\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 []; }-
$request->user()就是目前送出此請求的使用者資料 -
$request->user()->carts()則是因為User模型中,我們有設定carts()關聯,可以順便帶出目前這個使用者購物車裡所有內容 -
$request->user()->carts()->where('product_id', $request->product_id)則是將此使用者的購物車品項做利用商品編號篩選,只列出目前這個產品相關的資料即可。 -
$request->user()->carts()->where('product_id', $request->product_id)->first()則是列出單筆資料,詳情可參考:https://learnku.com/docs/laravel/5.8/eloquent/3931
-
- 接著把原有資料表內容清空以便觀察是否運作正常:

- 按第一次加入購物車時:

- 再按一次相同品項的加入購物車按鈕,並重新整理畫面,就看到數量已經累加囉!

- 加入購物車的功能已經大功告成!
15-7 利用模型觀察器建立使用者資料
