Как вытянуть все данные по связям из таблиц в laravel?

Подскажите, как можно вытянуть все данные из группы связанных таблиц через модель user в ларавел, все по типу многие к одному.

Таблицы следующие:

Country->city->office->user

Подскажите как построить запрос, чтобы через модель User можно получить все данные из всех таблиц и обратиться к этим данным в view?


Ответы (1 шт):

Автор решения: mydls1
Country::with([
    'cities' => function ($query) {
        $query->select('id', 'name', 'country_id'); // выберите только нужные столбцы для City
    },
    'cities.offices' => function ($query) {
        $query->select('id', 'name', 'city_id'); // только необходимые поля для Office
    },
    'cities.offices.users' => function ($query) {
        $query->select('id', 'name', 'office_id'); // только нужные поля для User
    }
])->select('id', 'name') // выберите только нужные поля для Country
->get();

Это более простой запрос, но меньше контроля, может загрузить не нужные поля, и повысит нагрузку. ( всегда контролируйте свои запросы )

 Country::with('cities.offices.users')->get();
→ Ссылка