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'));