Учитывая, что у вас есть 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
.
* 1021.* Если вы хотите получить информацию о продукте и категории, тогда вы можете загрузить:
$brands = Brand::whereHas('products.category', function ($q){
return $q->where('name', 'category_name');
})->with(['products', 'products.category'])->get();