繁体   English   中英

Laravel 5.4自定义联接(RAW SQL)映射到Eloquent模型

[英]Laravel 5.4 custom join (raw sql) mapped to an Eloquent Model

有人可以告诉我如何将RAW SQL或查询生成器的Join结果映射到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();

现在,我如何在这里将结果映射到“项目”模型的集合,并将子关系映射到其各自的模型

  • 学生
  • 用户
  • 球队

您不需要使用联接。 请改用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
}

更新:如果要为给定的团队获取项目,请执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM