2016-12-25 12 views
6

私はLaravel 5.3を使用しています。私は4つのテーブルを持っています。 デフォルトUsersテーブル。 Departments,Position,Employeesテーブル。Laravel 5.3外部キーによる接続を持つ4つのテーブルからの結果を取得するクエリ

UsersテーブルはID | Email | Password

DepartmentsテーブルはID | Department | User_Idを持っている - ここでUser_IdUsersテーブルの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つの表すべてからすべてのデータを取り出すことができますか?

答えて

3

あなたはnested eager loading使用することができます。

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

あなたの答えと、この違いは何ですか - http://stackoverflow.com/a/:

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

もう一つの方法は、単純なクエリを構築することです29166530/3866364 このようにしてみましたが、関係を適切に作成することはできません。 –

+0

違いはどういう意味ですか?あなたの関係がうまくいかない場合は、別の質問を投稿して、関係コードと外部キーの正確な名前を追加してください(大文字と小文字が区別されます)。 –

+0

混乱して申し訳ありません。つまり、あなたの答えはクエリだけです。しかし、私が上記のコメントを共有した他の質問の答えでは、Model(たとえばOneToMany、ManyToOneなど)を使用しています。だから、ursのようなクエリやモーダルリレーションを使う利点は何ですか? –

関連する問題