具有多个柱的Laravel belongsToMany枢轴
我目前在数据库中有两个表和一个pivot表,当我需要进行belongtomany查找时,可以将它们连接起来。基本示例是一个DB表是“teams”,另一个是“members”。我可以在团队模型和成员模型上使用belongstomy方法来拉动他们之间的关系。一个团队可以有许多成员,一个成员可以属于许多团队具有多个柱的Laravel belongsToMany枢轴,laravel,Laravel,我目前在数据库中有两个表和一个pivot表,当我需要进行belongtomany查找时,可以将它们连接起来。基本示例是一个DB表是“teams”,另一个是“members”。我可以在团队模型和成员模型上使用belongstomy方法来拉动他们之间的关系。一个团队可以有许多成员,一个成员可以属于许多团队 public function teams() { return $this->belongsToMany(Team::class); } public function member
public function teams()
{
return $this->belongsToMany(Team::class);
}
public function members()
{
return $this->belongsToMany(Member::class);
}
Pivot: team_member
team_id | member_id
---------------------
1 | 1
2 | 1
3 | 2
1 | 2
如何扩展该透视表以包含每个团队的成员类型?例如,member1是team1的领导者。成员1是团队2的助理。member1是team3上的普通成员。。。等等我可以在同一透视表中添加一列吗?会是membertype\u id吗?如何将其与另一个模型/表格关联?这很常见,Laravel已经处理过了。向数据透视表中添加额外的列,并扩展您的关系以使用
withPivot()
:
那么访问就简单到:
$user = \App\User::with(["teams"])->first();
$team = $user->teams->first();
$teamRole = $team->pivot->teamRole;
有关更多信息,请参阅文档:
回答第二部分,本质上是一个“三轴”,需要额外的功能。看
有关更多信息,请参阅相关资料包(由该问题的回答者提供,未维护,但作为示例很好)
可能重复的I正朝那个方向前进,但无法理解如何与透视表中的另一列关联。看起来我可以做一个“团队成员角色”透视表,每个列都有一个模型。然后我可以做一些类似的事情:$team->members->find($id)->roles()->wherePivot('member_id',$member->id)->get();美好的乍一看,这似乎应该奏效。我只在数据轴上遇到过非关系列(例如,
price
),但似乎可以处理另一层复杂性。干杯在这上面盘旋。如何获得一个具有3个关系的集合,以便将其列出?就像一张花名册。对于一个团队,列出该团队的所有成员及其角色。如果你有其他问题,最好问另一个问题,必要时参考这个问题。在高层,您只需在->with()
子句中使用多个值,例如->with([“users”、“users.role”、…])
等,就可以在一次雄辩的调用中获取所有信息。
$user = \App\User::with(["teams"])->first();
$team = $user->teams->first();
$teamRole = $team->pivot->teamRole;