Laravel 5.1 - 3个现有物理表之间的数据透视表

时间:2015-07-31 08:36:17

标签: php laravel laravel-5

我是Laravel 5.1的新手,我目前正致力于一个项目,让我自己熟悉Laravel。

我的应用程序中有很多表,但是我遇到了3个表之间的特定多重关系(可能应该使用数据透视表)。

所以,我有3张桌子:

  • 角色
  • 用户
  • 项目

以下规则适用于关系:

  • 用户可以拥有0到多个项目
  • 许多不同的用户都可以访问项目
  • 根据用户的角色
  • 授予用户某些特定项目的权利
  • 用户有"有效"项目是应用程序从中获取数据的项目。用户可以更改他们的活动"来自项目清单的项目。

(权限链接到角色并允许具有特定角色的用户对项目执行一组定义的操作)

我最初有一个用户< - >角色运作良好(就代码而言),但为用户定义的角色允许在每个项目上执行预定义的事情(对我来说不够灵活)。

我已经看过另一篇文章了。 same title as mine但我担心这无法解决我的需求,因为属性保存在交叉表上,尽管在我的情况下,我已经有了物理表。

1 个答案:

答案 0 :(得分:1)

为数据透视表制作模型,这样可以更轻松地使用。

ProjectAssignee:

  • PROJECT_ID
  • USER_ID
  • ROLE_ID (表示项目X,用户Y具有角色Z)

然后您可以定义以下关系:

  • 项目:hasMany(ProjectAssignees)
  • ProjectAssignee:belongsTo(Project),belongsTo(User),belongsTo(Role)
  • 用户:hasManyThrough(Project,ProjectAssignee),hasMany(ProjectAssignee)