/** * Product update * * @param ShopProductUpdateRequest $request * @param Product $product * @return \Illuminate\Http\RedirectResponse */ public function update(ShopProductUpdateRequest $request, Product $product) { $product->update($request->only('name', 'content', 'price', 'active')); if ($request->has('photos')) { $photos = Photo::whereIn('id', $request->get('photos'))->get(); $product->photos()->saveMany($photos); } if ($request->has('category_id')) { $product->categories()->sync($request->only('category_id')); } if ($request->has('field')) { //@Todo check field before save $product->values()->delete(); $product->fields()->sync(array_keys($request->field)); foreach ($request->field as $fieldId => $value) { $field = Field::findOrFail($fieldId); FieldValue::create([$field->type => $value[$field->type], 'product_id' => $product->id, 'field_id' => $field->id]); } } else { $product->values()->delete(); $product->fields()->detach(); } if ($request->has('fields')) { $product->fields()->attach($request->get('fields')); } Session::flash('message', 'Товар обнавлен'); return redirect()->route('manager.shop.product.edit', $product->id); }