class User extends Model {
// Local scope - вызывается явно
public function scopeActive(Builder $query): Builder {
return $query->where('status', 'active');
}
public function scopeOlderThan(Builder $query, int $age): Builder {
return $query->where('age', '>', $age);
}
}
// Использование
User::active()->olderThan(18)->get();
// Global scope - применяется ко всем запросам
class ActiveScope implements Scope {
public function apply(Builder $builder, Model $model): void {
$builder->where('is_active', true);
}
}
// User::withoutGlobalScope(ActiveScope::class)->get();