Route::post('/orders/create', function(Request $request){ $data = $request->all(); if(!Orders::where('orderNo', '=', $data['orderNo'])->exists()){ $order = 訂單::創建([ “姓名” => $data[“名稱”], “數量” => $data[“數量”], “選項” => $data[“選項”], “訂單編號” => $data[“訂單號碼”], “用戶ID” => $data[“用戶ID”], “價格” => $data[“價格”], “費用” => $data[“費用”], “日期” => $data[“日期”], ]); if(空($order->id)){ 返回 [ “成功” =>錯誤的, “回應” => [ “錯誤” => “發生了異常錯誤” ] ]; } 別的 { 返回 [ “成功” =>真的, “回應” => [ “訂單” => $訂單 ] ]; } } 別的 { 返回 [ “成功” =>錯誤的, “回應” => [ “錯誤” => “庫存項目已存在” ] ]; } });</pre> <p>我的訂單模型文件:</p>class Orders 擴充 Model { 使用 HasFactory; 受保護的$可填充= [ '產品', '數量', '選項', '訂單號碼', '使用者身分', '價格', '費用', '日期', ]; 公函數乘積 (){ 返回 $this->hasMany(Product::class); } }</pre> <p>如果您能幫我解決這個問題,我將不勝感激,因為我已經為此苦苦掙扎了一段時間。</p>
P粉5433443812023-09-01 00:13:45
我設法弄清楚了。我 console.log(this.cart.name) 並發現它是「未定義」。經過進一步調查,我發現原因是 state.cart 是一個物件數組,而不僅僅是一個物件。當然,原因是購物車中的每個單獨的商品都應該是它自己的對象。所以我的解決方案是:
for(let i = 0; i <= this.cart.length - 1; i++){ try { const order = await APIController.CreateOrder(this.cart[i].name, this.cart[i].qty, this.cart[i].option, this.cart[i].price, this.orderNum, this.cart[i].fee, this.cart[i].date, this.id); if(order){ this.clearCart(); } } catch (error){ console.log(error); } }
分解:由於 this.cart 是一個陣列而不是一個對象,我必須先使用 for 迴圈來取得購物車中每個項目的索引,然後呼叫將資料發佈到資料庫的函數。