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

标签 php laravel laravel-5

我是 Laravel 5.1 的新手,目前我正在做一个项目以自己熟悉 Laravel。

我的应用程序中有很多表,但我陷入了 3 个表之间的特定多重关系(也许应该使用数据透视表)。

所以,我有 3 个表:

  • 角色
  • 用户
  • 项目

以下规则适用于关系:

  • 一个用户可以拥有 0 到多个项目
  • 一个项目可以被很多不同的用户访问
  • 用户根据其角色被授予特定项目的某些权限
  • 用户有一个“事件”项目,应用程序从该项目获取数据。用户可以从项目列表中更改他们的“事件”项目。

(权限与角色相关联,允许具有特定角色的用户对项目执行一组定义的操作)

我最初有一个 Users <-> Roles 效果很好(就代码而言)但是为用户定义的角色允许在每个项目上做一组预定义的事情(这对我来说不够灵活) .

我已经看到另一个帖子了。 same title as mine但我担心这无法满足我的需求,因为属性保存在交集表中,但在我的情况下,我已经有了物理表。

最佳答案

为你的数据透视表制作一个模型,这应该会更容易使用。

项目受让人:

  • 项目编号
  • 用户编号
  • 角色编号 (表示在项目 X 上,用户 Y 具有角色 Z)

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

  • 项目:hasMany(ProjectAssignees)
  • 项目受让人:属于(项目),属于(用户),属于(角色)
  • 用户:hasManyThrough(Project, ProjectAssignee), hasMany(ProjectAssignee)

关于php - Laravel 5.1 - 3 个现有物理表之间的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741684/

相关文章:

php - Laravel 5.5 试图获取非对象的属性 'id'

php - L5.5 使用 SSH 在共享主机上的存储和公共(public)目录之间创建符号链接(symbolic link)

php - 为什么这个 foreach 不保存?拉维尔 5

laravel - 'as' 方法在 Laravel 中做什么

php - Laravel 中的数据库播种是什么?

php - Javascript 不影响由另一个脚本加载的内容

php - 如何获得更多的变量值?

jquery - Laravel Mysql 在 View 中显示记录

php - Laravel Blade 中不显示 session 值

javascript - 在文件对话框 AJAX 和 PHP 中选择后立即上传图像