Laravel Eloquent有一个。试图获得非对象的属性

时间:2016-06-21 16:13:22

标签: php mysql laravel eloquent

我已经使用Eloquent hasOne在用户注册到网站时创建用户和users_permissions表之间的关系,并根据他们在表单上输入的内容对用户进行分组并且工作正常,但是方法相同我认为它无法识别同一用户何时在网站上签名。

以下代码适用于用户注册网站

$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';
} 

但是我收到错误试图获取非对象的属性。 我真的很感激,如果有任何可以帮助,如果他们是我可以这样做的方式,并使用Laravel Eloquent Relationships方法。我希望你能理解我的意思。

1 个答案:

答案 0 :(得分:1)

创建一个通过权限关系查询的范围,并检查列(即$ permission)是否为TRUE。 Ax (bool)位......

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

然后在你的控制器中,保持它与你一样:

if($app->user->hasPermission('is_group_one')) {
    ...
}