【发布时间】:2015-10-22 20:49:56
【问题描述】:
我是 Laravel 5.1 的新手,我目前正在做一个项目以自己熟悉 Laravel。
我的应用程序中有很多表,但我卡在 3 个表之间的特定多重关系上(可能应该使用数据透视表)。
所以,我有 3 张桌子:
- 角色
- 用户
- 项目
以下规则适用于关系:
- 一个用户可以拥有 0 到多个项目
- 一个项目可以被许多不同的用户访问
- 根据用户的角色授予用户对特定项目的某些权限
- 用户有一个“活动”项目,应用程序从该项目中获取数据。用户可以从项目列表中更改他们的“活动”项目。
(权限与角色相关联,并允许具有特定角色的用户对项目执行一组定义的操作)
我最初有一个用户 角色,它运行良好(就代码而言),但为用户定义的角色允许在每个项目上执行一组预定义的事情(这对我来说不够灵活) .
我已经看到另一个帖子,大约。 same title as mine 但恐怕这不能满足我的需求,因为属性保存在交集表上,但在我的情况下,我已经有了物理表。
【问题讨论】:
-
帮助我的一件事是使用一个数据透视表,其中有一个额外的列。因此,在您的情况下,可能是用户和项目的数据透视表,然后在该数据透视表中包含一个 role_id 列。用户一次只能有一个“活动”项目吗?
-
你还说“我已经有了实体表。”,那些是什么表?你能告诉我们布局吗?
-
事实上,我有一个按照 Laravel 规范定义的交集表。 IE。 project_user 迁移。如果我在数据透视表上添加 role_id,我不知道我将能够检索用户对项目的角色,而且你是对的,一个用户一次只能有 1 个活动项目。所以我想我可以在交集表上添加可能的 role_id 并定义在给定时间哪个项目处于活动状态。我会尝试这样的事情,并在成功后发布一个 sn-p,以便其他人从中受益。
-
看看这个问题的答案:stackoverflow.com/questions/30222003/… - 因为这可能会给你一些获取 role_id 的方向
-
谢谢,一旦我实施了一个可行的解决方案来帮助他人,我会检查并更新。