在订单控制器 PHP Laravel 5.7 中增加产品数量

我可以,我们可以在 Laravel 项目上使用增量,我打算在商店中使用它并更新控制器吗?


我尝试在控制器中存储数据的同时进行更新,处理产品、订单和订单详细信息模型。


这是我到目前为止所得到的:


应用\订单控制器


public function store(Request $request)

    {

        $order = Order::create($request->all());

        

        $products = $request->input('products', []);

        $quantities = $request->input('quantities', []);

        for ($product=0; $product < count($products); $product++) {

            if ($products[$product] != '') {

                $order->products()->attach($products[$product], ['quantity' => $quantities[$product]]);

            Product::where('id', $products[$products])->increment('qty',$quantities[$product]); 

            }

        }

    

        return redirect()->route('orders.index');

    }

所以这行就是问题所在。我们可以在 store 函数上做这样的增量吗?


产品::where('id', $products[$products])->increment('qty',$quantities[$product]);


我的意思是,我应该在收到订单后增加产品的数量,对吧?


我没有成功,而是收到一条错误消息,如下所示:


ErrorException (E_WARNING) 非法偏移类型


我被困住了。请帮忙。


翻阅古今
浏览 86回答 1
1回答

一只斗牛犬

您正在尝试使用自己作为索引来访问数组。应该是$products[$product],不是$products[$products]public function store(Request $request){&nbsp; &nbsp; $order = Order::create($request->all());&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; $products = $request->input('products', []);&nbsp; &nbsp; $quantities = $request->input('quantities', []);&nbsp; &nbsp; for ($product = 0; $product < count($products); $product++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if ($products[$product] != '')&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $order->products()->attach($products[$product], ['quantity' => $quantities[$product]]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // $products[$product], without the 's'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Product::where('id', $products[$product])->increment('qty',$quantities[$product]);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return redirect()->route('orders.index');}
打开App,查看更多内容
随时随地看视频慕课网APP