如何在 laravel 中使用数据透视表中的 3 个关系创建关系?

Posted

技术标签:

【中文标题】如何在 laravel 中使用数据透视表中的 3 个关系创建关系?【英文标题】:How to create relations in laravel with 3 relations in the pivot table? 【发布时间】:2019-03-24 21:20:20 【问题描述】:

我在数据库架构中有以下表格:

用户(ID、姓名、姓氏) 团队(ID、名称) 角色(ID、姓名) 权限(ID、姓名) team_role_permission(team_id、role_id、permission_id) team_user (user_id, team_id, role_id)

我的目标是描述团队、角色和权限模型之间的关系。我阅读了 Laravel 文档,无法使用具有 3 个关系的数据透视表。实际上,我只会使用 3 个关系:

玩家在哪些球队以及他在每支球队中的角色(User/Player 模型中的方法 teams) 球队中有哪些球员,他们的角色是什么(Team 模型中的方法players

但是我不明白如何在 laravel 关系中使用它?

team_role_permission 和它的关系必须是,因为团队创建者应该能够手动编辑他的(每个)团队的权限。

【问题讨论】:

【参考方案1】:

可能的解决方案是手动存储在您的数据透视表中。 你应该为你的数据透视表创建一个模型。

$team = Team::create();
$role = Role::create();
$permission = Permission::create();

$pivot = new TeamRolePermission();
$pivot['team_id'] = $team->id;
$pivot['role_id'] = $role->id;
$pivot['permission_id'] = $permission->id;
$pivot->save();

【讨论】:

以上是关于如何在 laravel 中使用数据透视表中的 3 个关系创建关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值

laravel4 更新数据透视表中的附加列

Laravel Lucid whereHas 按数据透视表中的最新列

多对多关系 - 如何更新数据透视表中的属性

数据透视表的laravel关系问题

在 Laravel 的数据透视表中添加 id 列有啥好处?