我已经使用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方法。我希望你能理解我的意思。
答案 0 :(得分:1)
创建一个通过权限关系查询的范围,并检查列(即$ permission)是否为TRUE。 Ax (bool)
位......
public function scopeHasPermission($query, $permission)
{
return $query->permissions->where($permission, true);
}
然后在你的控制器中,保持它与你一样:
if($app->user->hasPermission('is_group_one')) {
...
}