2016-06-21 5 views
2

Я использовал Eloquent hasOne для создания отношений между пользователем и таблицей users_permissions, когда пользователь регистрируется на веб-сайте и группирует пользователя в соответствии с введенным им в форму способом, и он работал отлично, но тот же метод, я думаю, он не распознает, когда тот же пользователь подписывается на веб-сайте.Laravel Eloquent 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, который имеет (идентификатор, 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

Что вы храните именно в базе данных разрешений? – PeterPan666

ответ

1

Создайте область действия, которая запрашивает отношение разрешений и проверяет, является ли столбец (то есть $-разрешение) ИСТИНА. Ax в (bool) немного ...

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

Затем в контроллере, держать это так же, как у вас было такое:

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

Я все еще получаю ту же ошибку, пытаясь получить свойство не-объекта ... –

+0

Это трудно проверить на моем конце прямо сейчас. Проверьте правильность. –

+0

public function hasPermission ($ permission) { return $ this-> permissions() -> где ($ permission, true); } –

Смежные вопросы