Laravel 5.3 запрос для получения результатов из 4 таблиц, которые имеют соединения через внешний ключ

я использую Laravel 5.3. Я 4 стола. По умолчанию Users таблица. Departments, Position, Employees таблицы.

Users таблицы ID | Email | Password

Departments таблицы ID | Department | User_Id здесь User_Id внешний ключ приходит от Users таблицы ID

Positions таблицы ID | Position | Department_Id здесь Department_Id внешний ключ приходит от Departments таблицы ID

Employees таблицы ID | Employee | Position_Id здесь Position_Id внешний ключ приходит от Positions стол ID

пользователь может иметь несколько Departments. Departments может иметь несколько Positions, Positions может иметь несколько Employees. Итак, если пользователь отличается, как я могу получить все данные из всех 4 таблиц, которые создал этот пользователь?

1 ответов


можно использовать вложенную жадную загрузку:

$departments = Department::where('user_id', $id)
    ->with('positions', 'positions.employees')
    ->get();

другой способ-построить простые запросы:

$departments = Department::where('user_id', $id)->get();
$positions = Position::whereIn('department_id', $departments->pluck('id'));
$employees = Employee::whereIn('position_id', $positions->pluck('id'));