2017-04-20 7 views
1

에 따라 사용자 모델 관계 내가 (MySQL의 DB 포함)이 경우 최선의 전략을 요청하고 싶습니다 :Laravel 5.4 : 역할

나는 사용자 모델/표를 얻었다. 사용자는 관리자, 소유자 및 작업자의 세 가지 유형이 될 수 있습니다.

  • 소유자 hasMany의 위치
  • 위치 hasMany의 노동자
  • 작업자 belongsTo를

가 1 옵션 내가 참조하십시오 위치 :

그것이 소유자에 대한 이해 하는가와 Worker는 일반 필드가 있고 User 테이블에 'role'필드를 추가 했으므로 사용자 모델을 확장합니까?

소유자 및 작업자를위한 다른 2 개의 테이블을 만드는 것이 맞습니까?

Eloquent는이 경우 관계를 어떻게 처리합니까?

2 옵션 (쉽게하지만 ...) :

관리자, 소유자, 노동자 그리고 내가 좋아하는 데이터를받을 수 있나요 싶은 3 가지 모델/테이블


있습니다

  • $ 위치 -> 소유자() //이 위치에 대한 '주인'의 역할을 가진 사용자를 얻을 수
  • ,
  • $ 위치 -> 노동자() //이 위치를 '노동자'의 역할을 가진 사용자를 얻을
  • $ 소유자 -> 노동자() // 소유자
+1

나는 하나의 사용자 테이블을 유지하고, 사용자가 많은 역할을 가질 수있을 때 belongsToMany 관계에 대한 역할 중간 테이블을 가져갈 것이라고 말합니다. 사용자 모델에서 위치와 작업자 belongsTo 관계를 정의 할 수 있습니다.이 경우 사용자는 아무런 문제가 없으며 다른 역할에 대한 데이터가없는 경우 null을 반환합니다. –

+0

고맙지 만 다음과 같이 $ location-> workers() 또는 $ owner-> workers()와 같이 모델을 설정하는 방법은 무엇입니까? – sebap

답변

1
관련 노동자를 얻을 수

마지막으로, 내가 사용 :

  • 사용자 테이블
  • 역할 테이블
  • ROLE_USER 피벗 테이블
  • 위치 테이블 사용자 모델에서
  • location_user 피벗 테이블

, 일부 queryScope 방법은 역할에 따라 사용자를 검색 할 수 있습니다 : 충분한

public function scopeOwners($query) 
    { 
     $query->whereHas('roles', function ($q) { 
      $q->where('name','owner'); 
     }); 
    } 

쉽습니다.