属性 此 collection 实例上不存在 [products]。 (看法:

Property [products] does not exist on this collection instance. (View:

您好,我正在尝试从索引页面获取与该类别相关的产品,但在产品列表页面显示错误,

控制器:

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

blade 文件:

   @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">            
        .00
    </span>
    </div>

  @endforeach

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

class Category ... {

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

现在要在您的 products table 中使用它,您应该为每个产品设置一个 category_id 列。

问题是这个returns一个集合$categories = Category::distinct()->get();

所以需要循环两次:

@foreach($categories as $category)

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

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

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