目前,我在数据库中有两个表和一个数据透视表,当我需要进行“belongsToMany”查找时,可以将它们连接起来。基本示例是一个数据库表是“teams”,另一个数据库表是“members”。我可以在团队和成员模型上使用belongsToMany 方法来拉动他们之间的关系。一个团队可以有多个成员,一个成员可以属于多个团队。
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 的领导者。 member1 是 team2 的助理。 member1 是 team3 的通用成员...等等。我可以在同一个数据透视表中添加一列吗?是membertype_id吗?我如何将其与另一个模型/表关联起来?
这很常见,Laravel 已经处理了。向数据透视表添加额外的列并扩展要使用的关系withPivot()
:
public function teams(){
return $this->belongsToMany(Team::class)->withPivot(["teamRole", ...]);
}
然后访问就像这样简单:
$user = \App\User::with(["teams"])->first();
$team = $user->teams->first();
$teamRole = $team->pivot->teamRole;
请参阅文档以获取更多信息:
https://laravel.com/docs/5.6/eloquent-relationships https://laravel.com/docs/5.6/eloquent-relationships
要回答第二部分,本质上是“三重枢轴”,需要额外的功能。看
Laravel - 三个模型的数据透视表 - 如何插入相关模型? https://stackoverflow.com/questions/23651405/laravel-pivot-table-for-three-models-how-to-insert-related-models
有关更多信息,以及关联的包(由该问题的回答者提供,未维护,但作为示例很好)
https://github.com/jarektkaczyk/Eloquent-triple-pivot https://github.com/jarektkaczyk/Eloquent-triple-pivot
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)