Не удается обновить красноречивый «Многие ко многим» - PullRequest
0 голосов
/ 05 марта 2019

У меня проблема с обновлением записей. Я пытаюсь обновить 2 таблицы: во-первых, это таблица ORDERS , а во-вторых, ORDER_ITEMS , вторая таблица получает массив. У меня нет проблем с сохранением транзакции, мои проблемы - я не могу заставить обновление работать.

Заказ модели

public function orderItems()
{
    return $this->hasMany('App\Orderitems', 'order_id', 'id')->orderBy('created_at', 'DESC');
    // return $this->hasMany(Orderitems::class)->orderBy('created_at', 'DESC');
}

Элементы заказа Модель

public function orders()
{
    return $this->belongsTo('App\Orders','id','order_id');
    // return $this->belongsToMany(Orders::class);
}

OrdersController.php

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 = $request->only(
            'user_id',
            'status_id',
            'currency_id',
            'company_id',
            'purchase_no',
            'notes',
            'admin_notes',
            'delivery_date',
            'publish'
        );

        $order['grandtotal'] =  (float) str_replace(',', '', $request->grandtotal);
        $order->update($request);

        $input = $request->all();
        for($i=0; $i<= count($input['quantity']); $i++) {
        if(empty($input['quantity'][$i]) || !is_numeric($input['quantity'][$i])) continue;
            $items = [ 
                'order_id' => $orders->id,
                'product_id' => $input['product_id'][$i],
                'product_code' => $input['product_code'][$i],
                'product_name' => $input['product_name'][$i],
                'cost' => $input['cost'][$i],
                'quantity' => intval($input['quantity'][$i]),
                'total_cost' => (float) str_replace(',', '', $input['total_cost'][$i]),
            ];
            Orderitems::update($items);
        }

        if ($request){
            Session::flash('message','Purchase order was successfully updated');
            Session::flash('m-class','alert-success');
        } else {
            Session::flash('message','Data is not saved');
            Session::flash('m-class','alert-danger');
            return redirect()->route('orders.index');
        }
        return redirect()->route('orders.index');
    }

Я считаю, что красноречивое отношение в порядке, потому что я смог завершить сохранение или запись. Можете ли вы сказать мне, где все испортилось?

Заранее большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...