首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取当前产品ID

问如何获取当前产品ID
EN

Stack Overflow用户
提问于 2020-09-28 19:21:02
回答 1查看 39关注 0票数 0

我的产品控制器。在这里,一个产品有许多图像。Laravel在这里工作的一对多的关系。当我创建一个新产品时,该产品有3,4个或更多的图像。Product Image表有两列:Product_id和Image Name。

代码语言:javascript
复制
$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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 19:46:00

您应该在产品的图像之前保存它,不仅是为了获取产品的id,也是为了数据库外键约束

此外,您还应该在事务中执行此操作,以保证数据完整性

代码语言:javascript
复制
  // .....
  $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();

        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64101214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档