使用Laravel 5.3在集合中添加一个集合数组

时间:2016-09-26 16:38:45

标签: php laravel

我需要获得属于联邦总统的所有俱乐部。

所以,我有:

$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);
}

2 个答案:

答案 0 :(得分:1)

您可以使用预先加载。您使用点表示法来关联嵌套模型。

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

现在一切都为你嵌套......

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

另一种方法是使用hasManyThrough相关方法。它确实适用于2个has-manies。

Federation模型中。

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

答案 1 :(得分:1)

你可以尝试http://127.0.0.1:8001 关系...

它将为您提供属于associations

federation的所有俱乐部