<?php
namespace App\Models\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class AncientScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
$builder->where('is_admin', 0);
}
}
然后,修改您的用户模型以应用范围:
<?php
namespace App\Models;
use App\Models\Scopes\AncientScope;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The "booted" method of the model.
*
* @return void
*/
protected static function booted()
{
static::addGlobalScope(new AncientScope);
}
}
3条答案
按热度按时间j91ykkif1#
您可以在getTablequery()中将
->where('role', '0')
放在return nameModal::query()
之后。就像这样
return nameModal::query()->where('role', '0');
1u4esq0p2#
是的,你可以。你可以在相关的资源类中扩展
getEloquentQuery()
函数。因为你正在讨论用户模型,你可以像下面的代码示例一样将上述函数添加到UserResource.php
中。查看此以了解更多信息
e4yzc0pl3#
回答有点晚了,这里有一个深入的指南。
有两种方法
#1预过滤资源内的查询
在资源内,覆写下列方法:
#2全局范围
Filament使用了雄辩的界面,所以应用全局范围也可以完成这项工作。
首先,在App\Models\Scopes\中创建一个全局作用域类(不是必需的路径,只是一个建议):
然后,修改您的用户模型以应用范围: