Локальная область Laravel — это функция в среде Laravel, которая позволяет вам определять ограничения многократного использования запросов в ваших моделях Eloquent. Эти локальные области помогают организовать и повторно использовать общую логику запросов, делая ваш код более читабельным и удобным в обслуживании. Вот несколько методов, которые вы можете использовать для определения и использования локальных областей в Laravel, а также примеры кода:
-
Определение локальной области:
public function scopeActive($query) { return $query->where('status', 'active'); }
В этом примере мы определяем локальную область с именем
active
, которая добавляет условиеwhere
для фильтрации записей со статусом «активный». -
Использование локальной области:
$users = User::active()->get();
Определив локальную область
active
, мы можем связать ее с модельюUser
, чтобы получать только активных пользователей. -
Динамические локальные области:
public function scopeStatus($query, $status) { return $query->where('status', $status); }
В этом примере мы определяем динамическую локальную область с именем
status
, которая принимает параметр$status
и фильтрует записи на основе предоставленного статуса. -
Объединение нескольких локальных областей:
$users = User::active()->status('verified')->get();
Вы можете объединить несколько локальных областей для дальнейшего уточнения запросов. В этом случае мы извлекаем как активных, так и проверенных пользователей.
-
Передача аргументов в локальные области:
public function scopeAgeGreaterThan($query, $age) { return $query->where('age', '>', $age); }
Здесь мы определяем локальную область с именем
ageGreaterThan
, которая принимает параметр$age
. Он фильтрует записи, возраст которых превышает указанное значение. -
Использование локальных областей в отношениях:
public function scopeWithPosts($query) { return $query->with('posts'); }
Локальные области действия также можно использовать в отношениях модели. В этом примере мы определяем область с именем
withPosts
, которая загружает связанныесообщения
для запрошенной модели.
Организовав ограничения запроса в локальные области, вы можете повысить удобство обслуживания и читаемость своей базы кода Laravel.