更新laravel 5.5中的订单项

时间:2019-03-06 07:11:02

标签: php laravel

我有一个订购应用程序,其中包含订购商品。我能够更新仅包含单个数据的字段,但无法使处理数组数据的字段起作用。订单商品属于另一个名为OrderItems的模型。您可以帮助您正确处理吗?

这是我的更新功能。

public function update(Request $request, Orders $order )
    {
        $this->validate($request, [
            'user_id' => 'required',
            'status_id' => 'required',
            'currency_id' => 'required',
            'company_id' => 'required',
            'purchase_no' => 'required|unique:orders,purchase_no,'.$order->id,
            'notes' => '',
            'admin_notes' => '',
            'delivery_date' => '',
            'publish' => '',
            'product_id' => 'required',
            'product_code' => 'required',
            'product_name' => 'required',
            'quantity' => 'required'
        ]);

        $order->user_id = $request->input('user_id');
        $order->status_id= $request->input('status_id');
        $order->currency_id = $request->input('currency_id');
        $order->company_id = $request->input('company_id');
        $order->purchase_no = $request->input('purchase_no');
        $order->notes = $request->input('notes');
        $order->admin_notes = $request->input('admin_notes');
        $order->delivery_date = $request->input('delivery_date');
        $order->publish = $request->input('publish');
        $order->grandtotal =  (float) str_replace(',', '', $request->input('grandtotal'));
        $order->save();

        $input = Orderitems::findOrFail($order->id);
        for($i=0; $i<= count($input['quantity']); $i++) {
        if(empty($input['quantity'][$i]) || !is_numeric($input['quantity'][$i])) continue;
            $items->product_id = $input->input('product_id')[$i];
            $items->product_code = $input->input('product_code')[$i];
            $items->product_name = $input->input('product_name')[$i];
            $items->cost = $input->input('cost')[$i];
            $items->quantity = $input->input('quantity')[$i];
            $items->total_cost = (float) str_replace(',', '', $input->input('total_cost')[$i]);
            $orderItems->save();
        }
        return redirect()->route('orders.index');
    }

这是我更新表单中的屏幕截图 enter image description here

非常感谢您!

1 个答案:

答案 0 :(得分:2)

您为更新写了错误的代码。应该是这样的。

您要保存$orderItems代码中尚未更新的对象。

$items= $order->orderItems;

// still code not updated here i want to print product _id ?
foreach($items as $key => $item) {

$item->product_id = $request->input('product_id')[$key];
$item->product_code = $request->input('product_code')[$key];
$item->product_name = $request->input('product_name')[$key];
$item->cost = $request->input('cost')[$key];
$item->quantity = $request->input('quantity')[$key];
$item->total_cost = (float) str_replace(',', '', $request->input('total_cost')[$key]);
$item->save();
}