此集合实例上不存在属性 [stock]

在我的购物车模型中,我与产品模型有关系。在产品模型中,我与Product_attribute模型有关系。但我与Product_attribute模型没有关系。在本例中,我编写此代码来访问Product_attribute模型。


$getCartDetails = Cart::with('product.product_attribute')->where('id',$id)->first();

工作正常。我访问产品和产品属性数据


现在我想统计product_attribute 库存,类似的方式想统计购物车 数量。如果Product_attribute->stock >= Cart->quantity,我更新购物车表,否则不更新


这就是我写这段代码的原因


   public  function updateCartQuantity($id,$quantity)

   {

       $getCartDetails = Cart::with('product.product_attribute')->where('id',$id)->first();


      if($getCartDetails->product->product_attribute->stock->sum() >= $getCartDetails->quantity->sum()) {


           DB::table('carts')->where('id', $id)->increment('quantity', $quantity);

           return back()->with('success', 'product Quantity in the cart Updated Successfully!');

       }else{

       return back()->with('error', 'Required Product Quantity is not available!');

         }



   }

https://img1.mukewang.com/64e0794b0001df5318331022.jpg

largeQ
浏览 98回答 2
2回答

桃花长相依

您可以直接通过以下方式检查$check_qty =    DB::table('product_attribues)->where('product_id',$getCartDetails->product_id)->where('size',$getCartDetails->size)->first();$check_qty 将根据购物车表 Product_id 和 Size 为您提供库存数量。使用 If 条件检查更新的数量和库存数量后。因为您可以根据product_id和Size从product_attribues表中找到产品库存

慕慕森

看看错误,它说property stock doesn't exist on the collection instance.只需检查一次关系即可。正如我从名称中可以理解的那样,该产品可能有多个与其关联的产品属性(One to many relation)。这可能是集合错误时该属性不存在的原因。并且您正在尝试访问集合上模型的属性,但情况不应该如此。编辑:$getCartDetails->product->product_attribute->sum('stock') 。这就是您的 if 条件所需要的。它将为您提供集合中所有实例的库存属性的总和。
打开App,查看更多内容
随时随地看视频慕课网APP