获取非对象的属性

获取非对象的属性

我使用了雄辩的hasOne来创建用户和用户权限表之间的关系,当用户注册到网站上,并根据他们在表单上的输入对用户进行分组时,它工作得很好,但同样的方法我认为它无法识别同一用户在网站上的签名。
下面的代码工作是当用户注册到网站时

$user->permissions()->create(UserPermission::user_group($nature_of_entity));

但是当我想使用下面的方法时,尝试获取非对象的属性时出错。
public function hasPermission($permission) {
        return (bool) $this->permissions->$permission;
    }

public function permissions() {
        return $this->hasOne('App\User\UserPermission', 'user_id');
    }

在用户数据库中,一个名为users_permissions的表,它具有(id,user_id,is_group_one,is_group_two,is_group_three)
我想看看用户在哪个组中,比如:
if($app->user->hasPermission('is_group_one')){
        echo 'Group One';
}

但尝试获取非对象的属性时出错。
如果有人能帮忙的话我会非常感激,如果他们是我能做到这一点的方法,我会使用拉威尔雄辩的人际关系方法。我希望你能理解我的意思。

最佳答案

创建一个作用域,该作用域通过权限关系进行查询,并检查列(即$permission)是否为TRUE。砍掉(bool)位。。。

public function scopeHasPermission($query, $permission)
{
    return $query->permissions->where($permission, true);
}

然后在控制器中,保持原样:
if($app->user->hasPermission('is_group_one')) {
    ...
}

10-07 21:49