---
title: "Глобальні скоупи - умови за замовчуванням"
url: https://laravelukraine.com/blog/globalni-skoupi-umovi-za-zamovcuvanniam
author: "Олексій Бабінцев"
date: 2026-07-30
---

# Глобальні скоупи - умови за замовчуванням

Одна й та сама where-умова в кожному запиті? Це не DRY.

Global Scopes додають умову автоматично.

**Типові кейси:**

* Multi-tenancy
* Soft deletes (вже реалізовано через глобальний скоуп)
* `published = true`
* Архівні записи

Можна прибрати через `withoutGlobalScope()`.

```php
// Окремий клас скоупу
class PublishedScope implements Scope
{
  public function apply(Builder $builder, Model $model)
  {
    $builder->where('published', true);
  }
}

// Підключення до моделі
class Post extends Model
{
  protected static function booted()
  {
    static::addGlobalScope(new PublishedScope);
  }
}

// Всі запити - тепер тільки published
$posts = Post::all();
$post = Post::find(1);
```

```php
// Зняття скоупу для окремого запиту
$all = Post::withoutGlobalScope(
  PublishedScope::class
)->get();

// Multi-tenancy через глобальний скоуп
class TenantScope implements Scope
{
  public function apply(Builder $builder, Model $model)
  {
    if (auth()->check()) {
      $builder->where(
        'tenant_id',
        auth()->user()->tenant_id
      );
    }
  }
}

class Document extends Model
{
  protected static function booted()
  {
    static::addGlobalScope(new TenantScope);
  }
}
```
