Как управлять продуктами ControlController и ImagesController из одной формы? - PullRequest
0 голосов
/ 20 сентября 2018

у меня есть отдельные базы данных;продукты и изображения.и у них есть собственный контроллер.Также я создал отношения между ними.Теперь я не знаю, как использовать разные контроллеры для одной и той же формы.Я хочу сохранить изображения и продукты в базу данных с помощью кнопки Добавить продукт.Примечание: я хочу использовать imagesController, а не модель Image.

Здесь мой productsController @ store:

  /**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request, Product $product)
{
    request()->validate([
        'name'      => 'required|string',
        'description' => 'required|max:5000',
        // 'image' => 'required|file|image|mimes:jpeg,png,gif,webp',
        'price' => 'required|numeric',
        'compare_price' => 'required|numeric',
        'charge_tax' => 'boolean',
        'sku' => 'required|unique:products',
        'inventory' => 'required|numeric',
        // 'barcode' => 'required', required??
        'track_inventory' => 'required|boolean',
        'width' => 'required|numeric',
        'height' => 'required|numeric',
        'depth' => 'required|numeric',
        'weight' => 'required|numeric',
        'weight_type' => 'required',
        'extra_shipping_fee' => 'required|numeric',
    ]);


    $product = Product::create([
        'user_id'    => auth()->id(),
        'name'      => request('name'),
        'description' => request('description'),
        // 'image_path' => request()->file('image')->store(auth()->id().'images', 'public'),
        'price' => request('price'),
        'compare_price' => request('compare_price'),
        'charge_tax' => request('charge_tax'),
        'sku' => request('sku'),
        'inventory' => request('inventory'),
        'track_inventory' => request('track_inventory'),
        'width' => request('width'),
        'height' => request('height'),
        'depth' => request('depth'),
        'weight' => request('weight'),
        'weight_type' => request('weight_type'),
        'extra_shipping_fee' => request('extra_shipping_fee'),
    ]);



    if (request()->wantsJson()) {
        return response($product, 201);
    }

    return redirect('/products')
    ->with('flash', 'Product has been stored!');
}

А вот мой контроллер Images:

    /**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request, Product $product)
{
    if ($request->hasFile('images')) {
        foreach ($request->file('images') as $image) {
            $product->images()->create([
             'image_path' => $image->store(auth()->id().'images', 'public')
             ]);
        }
    }

}

1 Ответ

0 голосов
/ 20 сентября 2018

Если у вас есть отношение между моделями, вы можете сделать что-то вроде

$product->image()-create();

image() - это метод, который вы определили в своей модели продукта для отношения

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