Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Tips & Tricks: статті за тегом «Scopes»

Статті, новини, туторіали та переклади від учасників спільноти

No results.
Tips 30 липня 2026

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

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

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

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

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

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

// Окремий клас скоупу
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);
// Зняття скоупу для окремого запиту
$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);
  }
}