我需要获得属于联邦总统的所有俱乐部。
所以,我有:
$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 :(得分: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)