Anonymous
Невозможно обновить красноречивый режим «Многие-ко-многим»
Сообщение
Anonymous » 17 сен 2024, 06:31
У меня возникла проблема с обновлением записей. Я пытаюсь обновить две таблицы: сначала таблица
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 $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');
}
Я считаю, что красноречивое отношение в порядке, потому что я смог завершить сохранение или запись. Подскажите, где накосячил?
Заранее большое спасибо!
Подробнее здесь:
https://stackoverflow.com/questions/550 ... y-eloquent
1726543875
Anonymous
У меня возникла проблема с обновлением записей. Я пытаюсь обновить две таблицы: сначала таблица [b]ORDERS[/b], а вторая – [b]ORDER_ITEMS[/b], вторая таблица получает массив. У меня нет проблем с сохранением транзакции. Моя проблема в том, что я не могу заставить обновление работать. [b]Модель заказов[/b] [code]public function orderItems() { return $this->hasMany('App\Orderitems', 'order_id', 'id')->orderBy('created_at', 'DESC'); // return $this->hasMany(Orderitems::class)->orderBy('created_at', 'DESC'); } [/code] [b]Модель заказа[/b] [code]public function orders() { return $this->belongsTo('App\Orders','id','order_id'); // return $this->belongsToMany(Orders::class); } [/code] [b]OrdersController.php[/b] [code]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 $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'); } [/code] Я считаю, что красноречивое отношение в порядке, потому что я смог завершить сохранение или запись. Подскажите, где накосячил? Заранее большое спасибо! Подробнее здесь: [url]https://stackoverflow.com/questions/55007589/cant-update-many-to-many-eloquent[/url]