2017-04-06 55 views
1

有人可以告訴我如何將使用RAW SQL或查詢生成器創建的連接的結果映射到雄辯模型?Laravel 5.4定製連接(原始sql)映射到Eloquent模型

隊擁有衆多用戶誰有很多學生誰擁有許多項目

我在做一個連接,通過子關係得到一個團隊的所有項目

例子:

$projects = Project::join('students', 'students.id', '=', 'projects.student_id') 
      ->join('users', 'users.id', '=', 'students.user_id') 
      ->join('teams', 'teams.id', '=', 'users.team_id') 
      ->select('projects.*', 'students.*', 'users.*', 'teams.*') 
      ->get(); 

現在,我怎麼能得到這裏的結果映射到一個具有子關係映射其各自模型的「項目」模型集合

  • 學生
  • 用戶

回答

2

你並不需要使用連接。改用Eloquent的熱切加載。

提供了你的模型有關係定義正確,下面應該做的伎倆:

$projects = Project::with('student.user.team')->get(); 
foreach($projects as $project) { 
    $student = $project->student; //Student model 
    $user = $student->user; // User model 
    $team = $user->team; // Team model 
} 

UPDATE: 如果你想獲取給定團隊項目執行以下操作:

$projects = Project::with('student.user.team')->whereHas('student.user.team', function($query) use ($teamId) { 
    $query->whereId($teamId); 
})->get(); 
+0

但我需要指定團隊,有問題,在你的例子我不能,如果我想做過濾和東西我會怎麼做? – darkylmnx

+0

和hasmany通過似乎是一個很好的答案,但它onlu允許一箇中間表,在這裏我有兩個中間 – darkylmnx

+0

和這裏我d'ont需要查詢團隊,我只需要項目相關的團隊 – darkylmnx

相關問題