2016-09-26 2 views
0

Мне нужно получить все клубы, принадлежащие федерации.добавьте массив коллекции внутри коллекции с 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

У вас есть модель для клубов и делает ассоциацию у модели есть метод настройки, который связывает его с клубами? – 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 отношение ...

, который поможет вам все клубы, которые принадлежат к associations из federation

Смежные вопросы