Многоуровневые отношения на 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)
Другие вопросы по тегам