阅读(2107) (8)

Laravel 8 使用本地作用域

2021-07-07 11:41:11 更新

一旦定义了作用域,就可以在查询该模型时调用作用域方法。不过,在调用这些方法时不必包含 scope 前缀。甚至可以链式调用多个作用域,例如:

$users = App\Models\User::popular()->active()->orderBy('created_at')->get(); 

借助 or 查询运行符整合多个 Eloquent 模型,可能需要使用闭包回调:

$users = App\Models\User::popular()->orWhere(function (Builder $query) {
    $query->active();
})->get(); 

因为这样可能会有点麻烦,Laravel 提供了「更高阶的」orWhere 方法,它允许你在链式调用作用域时不使用闭包:

$users = App\Models\User::popular()->orWhere->active()->get();