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

Laravel:多用户类型的表结构,多态关系,laravel,polymorphism,relationships,Laravel,Polymorphism,Relationships,在我的网站(api使用laravel 5.6和laravel passport)中,我有两种类型的用户(教师和学生),将来还会有更多。教师和学生实体是非常不同的,这意味着如果我将它们都放在一个表中,那么该表将很长,并且许多字段将具有空值。现在我有一个带有公共字段的Users表和另外两个表(教师和学生),我已经从user设置了多态关系。我的问题是,这是一个好方法,还是有其他方法可以更优雅地处理这个问题?我会为教师创建一个表,为学生创建一个表,而不使用用户表/模型。这样,您可以将它们完全分开,而不用

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

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

有很多关于Laravel多身份验证/多用户在线的指南。 以下是一些帮助您入门的方法:

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


因为您说过教师和学生实体非常不同,所以您应该将它们分开。

通常最好不要在表中有一堆空值。所以,当您发现自己有多个空值时,通常意味着您需要拆分该表。您选择了什么解决方案?