Многоуровневые отношения на Laravel
У меня есть эта проблема. В Laravel у меня есть 3 модели, а именно:
class Department{
public function coordinations(){
return $this->has_many('Coordination');
}
}
class Coordination{
public function sites(){
return $this->has_many('Site');
}
}
class Site{
public function assets(){
return $this->has_many('FAssets');
}
}
class FAsset{}
Я хочу отобразить все активы, сгруппированные по отделам. Я попытался сделать что-то вроде:
@foreach($dependencias as $dep)
<tr>
<td colspan="8" style="width:100%">Dependencia: {{ $dep->code }} {{ $dep->description }}</td>
</tr>
@foreach($dep->coordinations()->sites()->assets()->get() as $asset)
...
Но я получил сообщение об ошибке "Метод [сайты] не определен в классе запросов". Я искал способ загрузки, но я не понимаю, как он мог бы работать с дополнительным уровнем отношений.
Кроме того, я собирался запросить все активы и отфильтровать активы с учетом фактической координации, но я думаю, что это займет много времени для загрузки...
заранее спасибо
1 ответ
Решение
class Deparment{
public function department_assets(){
$assets = array();
foreach($this->has_many('Coordination')->get() as $coordination){
foreach($coordination->sites()->get() as $site){
foreach($site->assets() as $asset)
{
$assets[] = $asset;
}
}
}
return $assets;
}
}
Теперь мы можем...
@foreach($dep->department_assets() as $asset)