2016-07-18 2 views
1

저는 Laravel로 시작하여 대부분의 기본 작동하지만 모델이나 컬렉션에 어린이를 추가하는 방법을 모릅니다. 그래서 기본적으로 3 가지 모델 (사용자, 배포자 및 계정)을 말합니다. 계정은 유통 업체에 속하며 배포자는 사용자에 속합니다. 둘 다 "일대 다"관계이므로 배포자는 많은 계정을 가질 수 있고 사용자는 여러 배포자를 가질 수 있습니다.Laravel은 모델에 어린이를 추가합니다.

이 해당 사용자

$distributors = User::find($id)->distributors; 

내 사용자 모델의 유통을 얻는다 내 컨트롤러에

내 배급 모델

public function accounts() 
    { 
     return $this->hasMany('App\Account'); 
    } 

내가 사랑하는 것입니다

public function distributors() 
    { 
     return $this->hasMany('App\Distributor'); 
    } 

배포자 모델에 자식으로 추가 된 계정 지금 내가 dd($distributors); 일 경우 해당 사용자에 대해 모든 배포자를 얻지 만 각 배포자에 대한 계정은 없습니다.

일부 기능을 추가하여 디스트리뷰터에 추가 할 수 있습니까? 이 호출을 사용하여 같이 : 일반적으로

$distributors = User::find($id)->distributors->with('accounts'); 

답변

0

를, 당신은 다음과 같은 예를에 대한 Distributor, Account를 추가 할 수 있습니다

귀하의 경우
Distributor::find(1)->accounts()->save($account); 

, 당신은에 Account을 추가 할 수 있습니다 Distributor은 다음과 같습니다.

$distributors = User::with('distributors')->find($id)->distributors; 
//A User can have many Distributors so you need to select one distributor, 
//the first one in this example with index 0 ! 
$distributors[0]->accounts()->save($account); 

이 정보가 도움이되기를 바랍니다.

+0

설명 할 수 있습니까? 쿼리를 가져온 배포자에게 계정을 가져 와서 저장하는 방법은 무엇입니까? 당신이 1의 ID를 그냥 통과하는 것처럼 보입니까? – Packy

+0

업데이트 된 답변을 확인하십시오. –

+0

네가하는 말을 알았어. 방금 배포자 목록을 얻을 때마다 실제 모델에 추가하는 방법이 있다는 것을 알았습니다. 한 번에 하나씩이 아니라 모든 계정을 가져올 수도 있습니다. 주요 목표는 모든 사용자 계정의 목록을 반환하는 것입니다. 이것들은 분배자를 통해 그들과 연관되어있다. – Packy

1

알겠습니다. 내가해야 할 일은 사용자 모델에 컨트롤러가 아닌 "with"를 추가하는 것입니다.

public function distributors() 
    { 

     return $this->hasMany('App\Distributor')->with('Accounts'); 
    }