2016-06-21 3 views
2

저는 사용자가 웹 사이트에 등록하고 사용자가 양식에 입력 한 내용에 따라 사용자를 그룹화 할 때 Eloquent hasOne을 사용하여 user_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 (ID 266 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

권한 관계를 쿼리하고 해당 열 (예 : $ 권한)이 TRUE인지 확인하는 범위를 만듭니다. 당신이 그것을 가지고로 (bool) 비트 도끼 ... 컨트롤러에서 다음

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

,이 같은 유지 :

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

나는 여전히 같은 오류가 발생하고 있는데, 비 객체의 속성을 얻으려고합니다 ... –

+0

지금 당장 테스트하기가 어렵습니다. 편집을 확인하십시오. –

+0

공용 함수 hasPermission ($ permission) { return $ this-> permissions() -> 여기서 ($ permission, true); } –

관련 문제