---
title: "Query Scopes - принцип DRY для запитів"
url: https://laravelukraine.com/blog/query-scopes-princip-dry-dlia-zapitiv
date: 2026-07-15
---

# Query Scopes - принцип DRY для запитів

Пишете `where('status', 'active')` у 20 контролерах? Перестаньте дублювати код.

Query Scopes дозволяють повторно використовувати логіку запитів. Описали один раз - застосовуєте всюди.

**Два типи:**

* **Локальні скоупи** - методи в моделі (з параметрами або без).
* **Анонімні скоупи** - inline-фільтри без визначення методу.

**Чому варто використовувати скоупи:**

1. Повторне використання коду
2. Краща читабельність
3. Простота тестування
4. Легко комбінуються між собою

Порада: Методи локальних скоупів починаються зі слова `scope` - Laravel автоматично прибирає його.

```php
// User Model
public function scopeActive($query)
{
  return $query->where('status', 'active');
}

public function scopeVerified($query)
{
  return $query->whereNotNull('email_verified_at');
}

public function scopeCreatedAfter($query, $date)
{
  return $query->where('created_at', '>', $date);
}

// Використання - чисто та читабельно
$users = User::active()->verified()->get();

$recentUsers = User::active()
  ->createdAfter(now()->subDays(7))
  ->get();

// Комбінування зі звичайними методами запиту
$admins = User::active()
  ->where('role', 'admin')
  ->orderBy('name')
  ->get();
```
