【发布时间】: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