【问题标题】:Eloquent relations - query rows to columns雄辩的关系 - 查询行到列
【发布时间】:2015-03-26 19:42:37
【问题描述】:
我有三张桌子:
- 用户 {id、first_name、last_name}
- 申请者 {id, first_name,
姓氏......}
- 标记 {id、applicant_id、user_id、标记}
表 marks 包含两个外键(applicant_id 和 user_id)。所以,逻辑是这样的:申请者多,用户少。用户需要审查每个申请人并为他设置一些标记。
期望的输出是显示(几乎)表“applicants”中的所有列(属性),并为表“users”中的每一行附加另一个列,users.last_name 在“标题”中,并在“正文”中为该申请人提供所需的标记。
我在这个应用程序中使用 Laravel 和 Eloquent,但不知道如何达到这个目的。
【问题讨论】:
标签:
php
mysql
laravel
relational-database
eloquent
【解决方案1】:
定义这种关系:
class Applicant extends Eloquent {
public function users(){
return $this->belongsToMany('User', 'marks')->withPivot('mark');
}
}
用法:
$applicants = Applicant::with('users')->get();
foreach($applicants as $applicant){
echo $applicant->first_name; // etc...
foreach($applicant->users as $user){
echo $user->last_name;
echo $user->pivot->mark;
}
}