Laravel:多个用户类型的表结构,多态关系

时间:2018-04-07 16:26:14

标签: laravel polymorphism relationships

在我的网站(api使用laravel 5.6和laravel passport)我有两种类型的用户(教师和学生),将来会有更多。教师和学生实体是非常不同的,这意味着如果我将它们全部保存在一个表中,则表将很长并且许多字段将具有空值。现在我有一个带有公共字段的Users表和另外两个表(教师和学生),我已经从用户设置了多态关系。我的问题是,这是一个好方法,还是有其他方法可以更优雅地处理这个问题?

1 个答案:

答案 0 :(得分:2)

我会为教师创建1个表,为学生创建1个表,而不使用Users表/模型。这样,您可以将它们完全分开,而不用担心将来添加更多类型的用户。不断尝试将新用户融入您现有的用户模型(这将是共享的)是一件令人头疼的事。我在开始时犯了同样的错误,最终不得不重新修改项目。

Laravel多功能/多用户在线有很多指南。 这里有几个可以帮助您入门:

此外,有些情况下,将用户模型用于多种类型的用户是有意义的。例如,对于大多数/所有字段相同的用户(不是您的方案),您可能有多个角色。在这种情况下,您可以为每个用户分配“角色”并检查操作的角色(例如,添加中间件以防止角色访问各种路由)。这是一个例子:

既然你说老师和学生实体非常不同,你应该将它们分开。