我在3类(例如)中产品很少。每个产品都有一个品牌。
所以我想展示与特定类别产品相关的品牌。
-产品
-品牌
-类别
类别有很多产品
品牌有很多产品
请指导我这样做。
非常感谢
答案 0 :(得分:4)
考虑到您有3种具有如下关系的模型:
Brand
型号:
public function products()
{
return $this->hasMany(Product::class);
}
Product
型号:
public function brand()
{
return $this->belongsTo(Brand::class);
}
public function category()
{
return $this->belongsTo(Category::class);
}
Category
型号:
public function products()
{
return $this->hasMany(Product::class);
}
您可以使用whereHas
:
$brands = Brand::whereHas('products.category', function ($q){
return $q->where('name', 'category_name');
})->get();
以上将为您提供所有产品类别为category_name
的品牌。
如果要获取产品和类别的详细信息,则可以急于加载:
$brands = Brand::whereHas('products.category', function ($q){
return $q->where('name', 'category_name');
})->with(['products', 'products.category'])->get();