Я новичок в Laravel, здесь мои существующие поля обновляются, но не могут вставить новую строку, когда пользователи проверяют новую категорию, она должна быть добавлена как новая строка в базе данных.
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required',
'shop_id' => 'required',
'sub_category_id' => 'sometimes|required|',
'is_visible' => 'required',
'is_active' => 'required',
]);
try {
$product = Product::find($id);
$product->name = $request->name;
$product->shop_id = $request->shop_id;
$product->is_visible = $request->is_visible;
$product->is_active = $request->is_active;
$product->save();
foreach($request->category_id as $key =>$v){
$data = array(
'product_id'=>$id,
'category_id'=> $v,
'sub_category_id'=>isset($request->sub_category_id [$key])?$request->sub_category_id [$key]:null,
'total_quantity'=>$request->total_quantity [$key],
'quantity_unit'=>$request->quantity_unit [$key]
);
$ewast = EwasteItem::where('product_id','=',$id)->where('category_id','=',$request->category_id [$key])->get();
if ($ewast) {
$ewasteitem = EwasteItem::where('product_id',$id)->where('category_id',$v);
$ewasteitem->update($data);
} else {
EwasteItem::insert($data);
}
}
return \Redirect::route('ewaste.index')->with('successMessage', 'Product Updated Successfully.');
} catch (ModelNotFoundException $e) {
return $e;
}
}