首页 > 解决方案 > 拉拉维尔 | 如何在类别视图中显示分配给产品的属性

问题描述

我对关系查询有疑问。我的 show.blade.php (类别)中有:

@foreach( $attributes as $attribute)
 {{ $attribute->title }}
@endforeach

并在 CategoryController 函数中显示:

$attributes = Attribute::where('visible',1)
        ->orderBy('order', 'asc')
        ->with('products')
        ->get();

我需要显示特定类别的产品属性。显示数据库中所有属性的解决方案。我有 3 个类别,每个类别都有具有自己属性的产品。并非所有属性都属于所有类别。

我的模型关系是:Category 1:n Product N : (pivot product_attribute) : N Attribute

类别 ID 是从视图传递的。我还可以访问特定类别。但是如何显示该类别中产品的属性。你有什么主意吗?

标签: laraveleloquent

解决方案


假设您在属性和产品模型中正确定义了关系,您可以使用以下查询来获取特定类别的属性

$attributes = Attribute::with(['product.category'])->whereHas('product.category', function($q) use ($categoryId) {
  $q->where('id', $categoryId);
})->get();

这里产品属性模型中定义的关系名称,类别产品模型中定义的关系名称。id类别表中的主键字段。


推荐阅读