2015-02-05 5 views
0

내가 구현할 수있는 방법을 웅변 모델 단항 다 대다 관계를 구현 단항 대다 웅변 모델 [Laravel]

관계 예 : 사용자가 요청 친구를 보낼 수있는 관계가 있다면 하나 이상의 사용자에게

은 내가 예를 들어 ,, 새로운 모델에 대한 기본 키 될 것 사용자 요청 사용자 같은 새로운 모델을 만들 필요가 있음을 알고 [user1_id이 user2_id] 그게 무슨의 I 일 잉크

하지만 어떻게 다음이 관계를 구현하는 ..이 가능하다

답변

1

예 친애하는 단지 많은 관계로하지만 약간의 차이가 보통 많은있다. many to many 관계에 대한 첫 번째 단계는 피벗 테이블 만들기이므로 피벗 테이블에 대한 마이그레이션을 만듭니다. 지금

public function up() 
{ 
    Schema::create('friend_request_user', function(Blueprint $table) 
    { 
     $table->integer('user_id')->unsigned()->index(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 

     $table->integer('request_user_id')->unsigned()->index(); 
     $table->foreign('request_user_id')->references('id')->on('users')->onDelete('cascade'); 

     $table->timestamps(); 

    }); 
} 

당신이해야을 마이그레이션을 피벗 테이블 많은 관계로 보통 많은 두 테이블에 소속되어 있지만 피벗 테이블에서는 피벗 테이블 이름 "friend_request_user"를 생성 한 table.if에 속하는, 그래서 여기에 두 모델 하나 "사용자"와 다른 당신은 이미 "사용자 요청 사용자". 두 모델 모두 "사용자"인 동일한 테이블을 가리켜 야합니다. 기본 사용자 모델에 의해 사용자 테이블에 지점입니다하지만 당신은 "사용자 요청 사용자"는 "사용자"테이블을 가리키는에 대한 속성 $ 테이블을 쓰기 모델 그래서

protected $table = 'users'; 

는 사용자 모델에서 당신은 쓰기와 같은 간단한 방법을 쓰기 ... 많은 관계로 다른 많은 그렇게 "belongsToMany"기능의

public function request(){ 
    return $this->belongsToMany('App\user-request-user', 'friend_request_user','user_id', 'request_user_id'); 
} 

첫 번째 매개 변수는 관계형 모델, 둘째는 피벗 테이블 이름이며, 셋째는 외래 키와 4는 피벗 테이블의 다른 키를 사용합니다. 이 경우 laravel 구문을 따르지 않기 때문에이 매개 변수를 작성합니다. 이것은 지금 당신이 다른 모델 "사용자 요청 사용자"에 쓰기하지만 이것은 단지 당신의 필요입니다 수있는 기능의 반대를 사용하실 수 있습니다

Auth::user()->request; 

같은이 함수를 호출, 모든입니다.

public function nameOfFunction(){ 
    return $this->belongsToMany('App\User', 'friend_request_user', 'request_user_id', 'user_id'); 
}