2016-09-26 3 views
0

federationPresident에 속한 모든 클럽을 얻어야합니다.컬렉션 내부에 Laravel 5.3 컬렉션 컬렉션을 추가하십시오.

그래서, 난이 : 나에게 협회의 컬렉션을 가져옵니다

$federation->associations 

,

$association->clubs that gives me a collection of clubs 
내가하고 싶은

:

$federation->associations->clubs, but it doesn't work 

내가 무슨 짓을 :

foreach ($federation->associations as $association) { 
     foreach ($association->clubs as $club){ 
      $clubs->push($club); 
    } 
} 

이 방법이 효과적이지만 뭔가 빠져있는 것 같아서 쉽게 해결할 수 있습니다.

것은 그것이 더 나은 수행하는 방법

어떤 생각 ...이 없습니다 매우 우아한, 내 코드에서 많은 시간을해야 할 것입니다, 그래서?

협회 모델 :

public function clubs() 
{ 
    return $this->hasMany(Club::class); 
} 
+0

associations 당신이 모델을 가지고 할 수있는 클럽 소속과 관계를 수행하는 모든 클럽을 얻을 것이다 모델에는 클럽과 관련된 방법 설정이 있습니까? – user3158900

+0

네, 필요한 경우, 포함시킬 수는 있지만 관계는 작동합니다. –

답변

1

당신이 열망로드를 사용할 수 있습니다. 중첩 된 모델과 관련된 도트 표기법을 사용합니다.

$federations = Federation::with('associations.clubs')->get(); 

이제 모든 것이

foreach ($federations as $federation) { 
    foreach ($federation->associations as $association) { 
     foreach ($assocation->clubs as $club) { 
      ... 
     } 
    } 
} 

또 다른 방법은 hasManyThrough 관련된 방법을 사용하는 것입니다 ... 당신을 위해 중첩됩니다. 그것은 2 가지 가련한 일을합니다.

Federation 모델에서

public function clubs() 
{ 
    return $this->hasManyThrough(Club::class, Association::class); 
} 
+0

이것은 정확하게 내가하고있는 것입니다. 2 foreach를 피하기 위해 무언가를 찾고 있습니다. –

+0

그러면 hasManyThrough가 될 클럽에 대한 제휴 모델에서 릴레이션을 설정할 수 있습니다. https://laravel.com/docs/5.3/eloquent-relationships#has-many-through – user3158900

+0

예, 이것이 내가 찾고있는 것이라고 생각합니다. 그러나 2와 많은 관계가 있음을 확신하지 못합니다. –

1
당신은 Has Many Through 관계를 시도 할 수 있습니다

...

당신에게 federation

관련 문제