【发布时间】:2019-01-22 04:17:17
【问题描述】:
是否可以在每次要查询特定模型时应用过滤器?所以不要每次都写这样的东西:
User::where('exclude', false)->all();
User::where('exclude', false)->first();
User::where('exclude', false)->where(...);
...
您可以在模型本身中包含 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() 方法的查询调用,而不影响其他方法。
【问题讨论】:
标签: laravel query-builder