属性[products]在此集合实例上不存在。 (视图:

时间:2019-08-16 07:42:28

标签: laravel eloquent laravel-5.8

他试图从索引页面获取与该类别相关的产品,但在产品列表页面却显示错误,

控制器:

 public function products(Request $request, Product $product)
 {
     $categories = Category::distinct()->get();
     return view('product.listing', compact('product', 'categories'));
 }

刀片文件:

   @foreach($categories->products as $product)

     <div class="block2-txt p-t-20">
      <a href="product-detail.html" class="block2-name dis-block s-text3 p-b-5">

       {{ $product->product_name }
     </a>

<span class="block2-price m-text6 p-r-5">            
        $75.00
    </span>
    </div>

  @endforeach

2 个答案:

答案 0 :(得分:1)

这意味着您缺少Category模型中的关系。你应该有这样的东西:

class Category ... {

public function products()
{
    return $this->hasMany(Product::class);
}

现在要在products表中使用此功能,您应该为每个产品都有一个category_id列。

问题是这将返回集合$categories = Category::distinct()->get();

因此您需要循环两次:

@foreach($categories as $category)

  // then here
  @foreach ($category->products as $product)
...

答案 1 :(得分:1)

您需要像这样的类别和产品模型之间的关系:

public function products()
{
    return $this->hasMany(Product::class);
}

现在,使用紧急加载。

 public function products(Request $request, Product $product)
 {
     $categories = Category::with('products')->distinct()->get();
     return view('product.listing', compact('product', 'categories'));
 }

此后,您可以以$category->products的身份访问产品视图