gpt4 book ai didi

Laravel 具有多列的belongsToMany 数据透视表

转载 作者:行者123 更新时间:2023-12-03 23:22:07 25 4
gpt4 key购买 nike

我目前在数据库中有两个表和一个数据透视表,当我需要进行belongsToMany 查找时可以将它们连接起来。基本示例是一个数据库表是“团队”,另一个是“成员”。我可以在团队和成员模型上利用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

回答第二部分,它本质上是一个“三重枢轴”,需要额外的功能。看

Laravel - Pivot table for three models - how to insert related models?

有关更多信息和相关包(由该问题的回答者提供,未维护,但作为示例很好)

https://github.com/jarektkaczyk/Eloquent-triple-pivot

关于Laravel 具有多列的belongsToMany 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com