我的产品控制器。在这里,一个产品有许多图像。Laravel在这里工作的一对多的关系。当我创建一个新产品时,该产品有3,4个或更多的图像。Product Image表有两列:Product_id和Image Name。
$this->validate($request, [
'name'=>'required',
'model'=>'required',
'brand'=>'required|numeric',
'category'=>'required|numeric',
'subcategory'=>'required|numeric',
'quantity'=>'required|numeric',
'price'=>'required|numeric',
'description'=>'required',
'feature_image'=>'required|image|max:3000',
'product_images'=>'required|max:5000',
]);
$image = $request->file('feature_image');
$slug = Str::slug($request->name);
$currentDate = Carbon::now()->toDateString();
$tempName = $slug . '-' . $currentDate . '-' . uniqid() . '.' . $image->getClientOriginalExtension();
$path = 'backend/images/product/';
$imageName = $path . $tempName;
$image->move($path, $imageName);
$store_id = Store::where('user_id', Auth::id())->first();
$product_id = Product::latest()->first();
$product = new Product();
$product->user_id = Auth::id();
$product->store_id = $store_id->id;
$product->brand_id = $request->brand;
$product->category_id = $request->category;
$product->subcategory_id = $request->subcategory;
$product->name = $request->name;
$product->slug = $slug;
$product->model = $request->model;
$product->description = $request->description;
$product->quantity = $request->quantity;
$product->quantity = $request->quantity;
$product->price = $request->price;
$product->discount = $request->discount;
$product->feature_image = $imageName;
$product->pending = true;
$product->visible = true;
foreach ($request->product_images as $data){
$productImageTempName = $slug . '-' . $currentDate . '-' . uniqid() . '.' . $data->getClientOriginalExtension();
$productImageName = $path . $productImageTempName;
$data->move($path, $productImageName);
$product_image = new ProductImage();
$product_image->product_id = ????;
$product_image->image = $productImageName;
$product_image->save();
}
$product->save();
return redirect()->route('admin.product.index')->with('success', 'Product Successfully Create');现在,我如何获得产品id在哪里问号。我需要当前创建的产品id。
发布于 2020-09-28 19:46:00
您应该在产品的图像之前保存它,不仅是为了获取产品的id,也是为了数据库外键约束
此外,您还应该在事务中执行此操作,以保证数据完整性
// .....
$product->visible = true;
DB::transaction(function ()use($product,$request,$slug,$currentDate,$path){
$product->save();
foreach ($request->product_images as $data){
$productImageTempName = $slug . '-' . $currentDate . '-' . uniqid() . '.' . $data->getClientOriginalExtension();
$productImageName = $path . $productImageTempName;
$data->move($path, $productImageName);
$product_image = new ProductImage();
$product_image->product_id = $product->id;
$product_image->image = $productImageName;
$product_image->save();
}https://stackoverflow.com/questions/64101214
复制相似问题