2016-10-02 5 views
2

laravel 인증을 시도하고있어 조건을 확인하고 부울을 반환하는 사용자 모델에 대한 메서드가 필요합니다! 예 : ? hasRole ([ 'admin', 'superadmin')과 같은 조건을 검사하는 laravel 모델 메소드?

$user->hasRole(['superadmin']); // should return true/false 

및 모델의

:

class User extends Model{ 
    /***** 
    ***** 
    *****/ 
    public function roles() 
    { 
     return $this->hasMany('App\Role'); 
    } 

    public function hasRole($roles) 
    { 
     // some validation and return boolean 
    } 
} 

내가 어떻게이 laravel 모델을 통해해야합니까? 어쨌든?

+0

@BaikHo, 그건 내가 laravel 모델을 통해이 작업을 수행하지만 당신은 이미 알아 낸 것 같다 어떻게 당신에게 끝없는 루프 ... – Devon

+0

을 만들 것입니다. 그냥 논리를 넣어 ... – Devon

답변

1
public function hasRole($roles) 
{ 
    return !$this->roles->pluck('role_column')->intersect($roles)->isEmpty(); 
} 

당신이 문자열 배열을 가지고 있기 때문에 'role_column'

0

을 변경하는 것을 잊지 마세요, 나는 당신의 역할은 이름을 가지고 가정, 당신은 간단한 SQL 쿼리와 함께이 작업을 수행 할 수 있습니다.

public function hasRole($roles) { 
    return $this->roles->whereIn('role', $strings)->exists(); 
} 
+0

감사합니다! 유용하다. –