Вы можете запросить от Recipe
до WareHouse
, связав element_id
.
Модель рецепта:
public function warehouses()
{
return $this->hasMany(\App\Models\WareHouse::class, 'element_id', 'element_id');
}
Модель WareHouse:
public function recipes()
{
return $this->hasMany(\App\Models\Recipe::class, 'element_id', 'element_id');
}
Код контроллера:
Product::whereHas('recipes', function($q) {
$q->whereHas('warehouses', function($query) {
$query->whereRaw('WareHouse.stock > Recipe.count'); // use table names here, not model names
});
})->get();
Если вы хотите сделать это с областью в модели Рецепта:
public function scopeEnableElements($query)
{
$query->whereHas('warehouses', function($query2) {
$query2->whereRaw('WareHouse.stock > Recipe.count'); // use table names here, not model names
});
}
Тогда в вашем контроллере:
Product::whereHas('recipes', function($query) {
$query->enableElements();
})->get();