Можно ли применять фильтр каждый раз, когда вы хотите запросить конкретную модель? Поэтому вместо того, чтобы писать что-то подобное каждый раз:
User::where('exclude', false)->all();
User::where('exclude', false)->first();
User::where('exclude', false)->where(...);
...
Вы могли бы включить это условие в саму модель? В результате вышеприведенные запросы будут выглядеть так:
User::all();
User::first();
User::where(...);
...
, чтобы все пользователи с полем exclude
, установленным как true, не появлялись в результатах запроса.
Кроме того, может ли оно работать во всех отношениях, которые ссылаются на модель? Например:
$post->user();
$group->users();
Не уверен, как подойти к этому. Для начала я попытался переопределить один метод, подобный этому:
public static function all($columns = []) {
return self::where('exclude', false)->get($columns);
}
Однако, похоже, он ничего не делает. Кроме того, даже если это произойдет, это повлияет только на вызовы запросов, которые конкретно используют метод all()
, а не другие.