我有一个用于保存用户的表格。用户可以是学生,教师,校长或其组合,我利用角色来实现这一目标(包名为spatie/laravel-permission)。
我为学生,教师和校长提供具有自己的逻辑,查询等的特定模型,但我没有针对这些模型的特定表格。
目前,我通过使用教师模型中的boot()函数来确定用户是否是教师(同样适用于学生和校长):
protected static function boot()
{
parent::boot();
//Todo: make use of role package to determine if model is teacher or not.
static::addGlobalScope('teacher', function (Builder $builder) {
$builder->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('teacher_offering')
->whereRaw('teacher_offering.user_id = users.id');
});
});
}
此查询效果很好,但我想知道是否可以通过使用Spatie提供的Laravel权限包来简化此操作。
我的问题是:我可以通过检查教师角色是否已分配给用户来替换boot()函数中的查询吗?
我可以使用此软件包实现此目的,还是应该继续使用此查询?
答案 0 :(得分:0)
检查用户角色的用例是什么?如果您尝试阻止访问某些网页,请使用Middleware检查角色。我认为范围不适合这个。
spatie/laravel-permission包提供<div id="me"></div>
方法,假设您的hasRole($role)
实现了User
特征:
HasRoles