Чтобы часть запроса всегда выполнялась в Laravel Eloquent, вам понадобится использовать глобальные области видимости (global scopes).
Глобальные области видимости позволяют добавлять условия к каждому запросу, выполняемому с использованием определенной модели. Это очень удобно в случае, когда вы хотите, чтобы определенное условие применялось автоматически ко всем запросам, связанным с конкретной моделью.
Для создания глобальной области видимости вы можете воспользоваться фасадом "DB" и методом "where" для добавления вашего условия. Например, если вы хотите добавить условие, что только активные записи должны быть выбраны автоматически при выполнении запросов к модели "User", вы можете создать следующую глобальную область видимости:
<?php namespace AppScopes; use IlluminateDatabaseEloquentBuilder; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentScope; class ActiveUserScope implements Scope { public function apply(Builder $builder, Model $model) { $builder->where('active', true); } }
Затем вы должны добавить эту глобальную область видимости к вашей модели "User":
<?php namespace AppModels; use AppScopesActiveUserScope; use IlluminateFoundationAuthUser as Authenticatable; class User extends Authenticatable { protected static function boot() { parent::boot(); static::addGlobalScope(new ActiveUserScope); } }
Теперь каждый раз, когда вы выполняете запросы к модели "User", условие "active = true" автоматически будет применяться. Например:
$users = User::all(); // Вернет только активных пользователей $user = User::find(1); // Вернет активного пользователя с идентификатором 1 $inactiveUsers = User::withoutGlobalScope(ActiveUserScope::class)->get(); // Вернет всех пользователей, включая неактивных
Таким образом, глобальные области видимости позволяют вам добавить одно из условий запроса, которое будет выполняться всегда при использовании Eloquent для работы с определенной моделью. Это удобное и эффективное средство для добавления повторяющихся условий к вашим запросам.