2016-12-25 20 views
6

Używam Laravel 5.3. Mam 4 tabele. Domyślna tabela Users. Departments, Position, tabele.Zapytanie Laravel 5.3, aby uzyskać wyniki z 4 tabel, które mają połączenia za pomocą klucza obcego

Users tabela ma ID | Email | Password

Departments tabela ma ID | Department | User_Id - Tutaj User_Id jest klucz obcy pochodzi z Users stołu ID

Positions tabela ma ID | Position | Department_Id - Tutaj Department_Id jest klucz obcy pochodzi z Departments stołu ID

Employees tabela ma ID | Employee | Position_Id - Tutaj Position_Id jest obcym kluczem z Positions tabeli ID

Użytkownik może mieć wiele Departments. Departments może mieć wiele Positions, Positions może mieć wiele Employees. Tak więc, jeśli użytkownik jest inny, w jaki sposób mogę pobrać wszystkie dane ze wszystkich 4 tabel utworzonych przez tego użytkownika?

Odpowiedz

3

Można użyć nested eager loading:

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

Innym sposobem jest budowanie prostych zapytań:

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

Jaka jest różnica między odpowiedzią a to - http://stackoverflow.com/a/ 29166530/3866364 Próbowałem tego w ten sposób, ale nie mogę poprawnie utworzyć relacji. –

+0

Co masz na myśli przez różnicę? Jeśli twoje relacje nie działają, opublikuj kolejne pytanie i dodaj swój kod relacji oraz dokładne nazwy obcych kluczy (rozróżniana jest wielkość liter). –

+0

Przepraszamy za zamieszanie. Mam na myśli to, że twoja odpowiedź ma tylko Kwerendę. Ale w odpowiedzi na inne pytanie, które podzieliłem powyżej, użyłem modelu (używanego na przykład OneToMany, ManyToOne itp.). Jakie są korzyści z używania zapytań takich jak urs lub używania relacji modalnych? –