Scopes інкапсулюють часто вживані умови запитів.
Local scope - викликається вручну:
public function scopePublished(Builder $query): Builder
{
return $query->where('is_published', true);
}
Post::published()->latest()->get();
Global scope - застосовується автоматично до всіх запитів моделі:
#[ScopedBy([TenantScope::class])]
class Invoice extends Model {}
SoftDeletes - приклад глобального scope (автоматично додає where deleted_at is null). Глобальний scope можна обійти через withoutGlobalScope().