我如何获得每种产品类别的类型名称?
例如
分类:CAT1 / CAT2。
产品:name1(类型:type1,type_id& categorie_id外键)
name2(类型:type2)
类型:type1
TYPE2
这是为这个类别(foreach)的“子菜单”类型制作一个类别菜单
我试过这个,但没有用(Undefined属性:Illuminate \ Database \ Eloquent \ Collection :: $ type)。只是$ cat->产品工作,但这不是我想要的:
$categories = Categorie::All();
@foreach ($categories as $cat)
{{$cat->nom}}
<ul>
@foreach ($cat->produit->type as $type)
<li><a href="#">{{$type->nom}}</a></li>
@endforeach
</ul>
@endforeach
[TYPE] 1,n(有)1,1 [PRODUCT] 1,1(归属)1,n [CATEGORIE]
产品
public function Categorie()
{
return $this->belongsTo('App\Models\Categorie');
}
public function Type()
{
return $this->belongsTo('App\Models\Type');
}
Categorie
public function Produit()
{
return $this->hasMany('App\Models\Produit');
}
类型
public function Produit()
{
return $this->hasMany('App\Models\Produit');
}
答案 0 :(得分:0)
使用Eloquent实现此目标的最有效方法是使用3个查询从DB获取数据的方法。然后它使用了Laravel系列的强大功能:
// Get data from DB.
$categories = Categorie::with('products')->get();
$types = Type::all();
// Working with loaded collections.
@foreach ($categories as $category)
{{ $category->name }}
@foreach ($types->whereIn('id', $category->products->unique('type_id')->pluck('type_id')) as $type)
{{ $type->name }}
@endforeach
@endforeach