Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个柱的Laravel belongsToMany枢轴_Laravel - Fatal编程技术网

具有多个柱的Laravel belongsToMany枢轴

具有多个柱的Laravel belongsToMany枢轴,laravel,Laravel,我目前在数据库中有两个表和一个pivot表,当我需要进行belongtomany查找时,可以将它们连接起来。基本示例是一个DB表是“teams”,另一个是“members”。我可以在团队模型和成员模型上使用belongstomy方法来拉动他们之间的关系。一个团队可以有许多成员,一个成员可以属于许多团队 public function teams() { return $this->belongsToMany(Team::class); } public function member

我目前在数据库中有两个表和一个pivot表,当我需要进行belongtomany查找时,可以将它们连接起来。基本示例是一个DB表是“teams”,另一个是“members”。我可以在团队模型和成员模型上使用belongstomy方法来拉动他们之间的关系。一个团队可以有许多成员,一个成员可以属于许多团队

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;