【问题标题】:How to manage productsController and ImagesController from the same form?如何从同一个表单管理 productsController 和 ImagesController?
【发布时间】:2019-02-24 18:44:42
【问题描述】:

我有单独的数据库;产品和图像。他们有自己的控制器。我也创造了他们之间的关系。现在我不知道如何为同一个表单使用不同的控制器。我想使用添加产品按钮将图像和产品存储到数据库中。注意:我想使用 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!');
}

这里是我的图像控制器:

    /**
 * 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')
             ]);
        }
    }

}

【问题讨论】:

    标签: database laravel model controller routes


    【解决方案1】:

    如果模型之间存在关系,则可以执行类似的操作

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

    image() 是您在产品模型中为关系定义的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2018-03-08
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多