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 循环来获取购物车中每个项目的索引,然后调用将数据发布到数据库的函数。