与口才/拉威尔的复杂关系

时间:2019-06-26 13:45:43

标签: php laravel laravel-5

与该网站上的其他许多问题一样的故事:我一直在脑海里扎了几个小时,试图弄清这些关系。

我有3种关系应该像这样的模型:

型号:用户
用户可以属于许多学校。
用户在每个学校中分别属于一个“角色”。
可以在每个学校分别激活/停用用户。

型号:学校
学校可以属于许多用户

模型:角色
角色将是“标准”或“管理员”。

我有一个连接用户和学校的数据透视表。 在数据透视表上,我还尝试添加'role_id'和'is_activated'列-我怀疑这样做是否正确?


我要访问这样的数据:

用户
获取属于该用户的学校。
担任当前学校的职务。
获取当前学校的激活/停用状态。

学校
获取所有属于学校的用户。
获取每个用户的角色。
获取每个用户的激活/停用状态。


如果每个用户只能属于一所学校,我将解决此问题,但是由于同一用户可以属于多所学校,这对我来说太复杂了。

我应该在每种模型上应用哪种关系?

如果有人能指出我正确的方向,我将非常感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在many-to-manyuser之间建立school关系。这将需要它们之间的数据透视表来存储两个模型的ID。最后,从用户的角度来看,您的关系将最终成为:

public function schools() {
  return $this->belongsToMany('App\Models\School', 'pivot_table', 'user_id', 'school_id');
}

您可以看看laravel docs on Many-to-Many