[英]Laravel 5.4: Converting a raw SQL query in Laravel 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.