他试图从索引页面获取与该类别相关的产品,但在产品列表页面却显示错误,
控制器:
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
答案 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
的身份访问产品视图