2016-10-27 2 views
0

좋아, 쉽게 시작하려면 행 (권한)이있는 테이블은 int이고 1 또는 0이 될 수 있습니다. 사용자 테이블에 순위 ID가있는 행이 있습니다.Laravel 추가 인증 정보

예 사용자 테이블 : 이름 : SynteX 이메일 : *@**.nl 순위 : 2

예는 위 표 : ID : 2 permToEdit : 1

내가 가진 순위 ID를 표시 할 수 있습니다 : Auth :: user() -> rank 그러나 이것은 도움이되지 않습니다. 다음과 같은 순위 행에 액세스하려고합니다. Auth :: user() -> rank-> permToEdit. 다음 쿼리를 실행하면 가능합니다 :

Auth::user()->rank = DB::table('ranks')->select('color')->where([['id', '=', Auth::user()->rank],])->first(); 

이렇게하면 모든 컨트롤러와 모든보기에서 액세스 할 수 있습니다. 그렇다면이 라인을 어디에 두는 것이 좋을까요? 당신은 당신의 사용자 모델

public function rank() 
{ 
    return $this->hasOne(Rank::class); 
} 

에 그러나 사용자의 역할/권한이 방법을 추가 할 수 있습니다 관계의

+1

읽기 [관계] (https://laravel.com/docs/5.3/eloquent-relationships) – tam5

+0

사용자가 1 개 또는 복수의 '순위'를 가질 수 있습니까? –

답변

0

나는 Zizaco/entrust 도우미를 추천합니다.

+0

이 작업을하려면 열 순위가 'rank_id'여야합니다. 그렇지 않으면 열 이름을 관계 메서드의 매개 변수로 추가해야합니다. – tam5

+0

@tam'users' 테이블에'rank_id' 필드가 있으면이 예제가 작동합니다. – aleksejjj

+0

그것이 내가 방금 말한 것입니다. – tam5

0

내가 올바르게 질문하는지 잘 모릅니다. 그러나 피벗 테이블이 필요하다고 생각됩니다.

당신은 테이블이 '사용자'

그리고 테이블 : '계급'

그래서 당신은 (순위가 먼저 있도록 Laravel은, 여기에 알파벳 순서로 당신을 작동하는 피벗 테이블 rank_user을 만드는 경우 '사용자'의 '순위'모델에서이를 변경할 수 있습니다.) 당신이 만들어야합니다 귀하의 사용자 모델에 그럼

Schema::create(‘rank_user', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->integer('rank_id'); 
      $table->boolean('permToEdit') // withs converts to a ‘tiny int’ in the database 
}); 

:

public function ranks() 
    { 
     return $this->belongsToMany(‘App\Rank’)->withPivot(‘permToEdit’); 
    } 

을 그리고 모델이 순위에 :

그래서 처음 you'l 피벗 테이블을 만들 필요가

public function users() 
    { 
     return $this->belongsToMany(App\User') 
      ->withPivot('permToEdit '); 
    } 

이제 사용자 모델에서 다음 기능을 사용할 수 있습니다.

,451,515,
public function getPermToEdit() 
{ 
    Return $this->ranks()->wherePivot(‘permToEdit’, true)->first(); 
} 

또는 당신은 당신이 할 수있는 특정 사용자 ID PAS해야하는 경우 :이 모든 확인 당신에게 새로운 경우

public function getUserPermToEdit($user_id) 
{ 
    Return $this->ranks()->wherePivot('user_id', $user_id)->wherePivot(‘permToEdit’, true)->first(); 
} 

을 약 https://laravel.com/docs/5.3/eloquent-relationships 또는 https://www.youtube.com/watch?v=xIBST5vVq84&list=PLfdtiltiRHWEb-tzSN99Zy-39Y1tKl5DB

+0

여기에 피벗 테이블이 필요하지 않습니다. 하지만 OP가 자신의 접근 방식을 바꾸고 싶다면 좋은 제안 일 수 있습니다. – tam5