Понимание локальных областей видимости Laravel: многоразовые ограничения запросов в моделях Laravel

Локальная область Laravel — это функция в среде Laravel, которая позволяет вам определять ограничения многократного использования запросов в ваших моделях Eloquent. Эти локальные области помогают организовать и повторно использовать общую логику запросов, делая ваш код более читабельным и удобным в обслуживании. Вот несколько методов, которые вы можете использовать для определения и использования локальных областей в Laravel, а также примеры кода:

  1. Определение локальной области:

    public function scopeActive($query)
    {
    return $query->where('status', 'active');
    }

    В этом примере мы определяем локальную область с именем active, которая добавляет условие whereдля фильтрации записей со статусом «активный».

  2. Использование локальной области:

    $users = User::active()->get();

    Определив локальную область active, мы можем связать ее с моделью User, чтобы получать только активных пользователей.

  3. Динамические локальные области:

    public function scopeStatus($query, $status)
    {
    return $query->where('status', $status);
    }

    В этом примере мы определяем динамическую локальную область с именем status, которая принимает параметр $statusи фильтрует записи на основе предоставленного статуса.

  4. Объединение нескольких локальных областей:

    $users = User::active()->status('verified')->get();

    Вы можете объединить несколько локальных областей для дальнейшего уточнения запросов. В этом случае мы извлекаем как активных, так и проверенных пользователей.

  5. Передача аргументов в локальные области:

    public function scopeAgeGreaterThan($query, $age)
    {
    return $query->where('age', '>', $age);
    }

    Здесь мы определяем локальную область с именем ageGreaterThan, которая принимает параметр $age. Он фильтрует записи, возраст которых превышает указанное значение.

  6. Использование локальных областей в отношениях:

    public function scopeWithPosts($query)
    {
    return $query->with('posts');
    }

    Локальные области действия также можно использовать в отношениях модели. В этом примере мы определяем область с именем withPosts, которая загружает связанные сообщениядля запрошенной модели.

Организовав ограничения запроса в локальные области, вы можете повысить удобство обслуживания и читаемость своей базы кода Laravel.