Laravel:多种用户类型的表结构,多态关系
Posted
技术标签:
【中文标题】Laravel:多种用户类型的表结构,多态关系【英文标题】:Laravel: Table structure for multiple users types, polymorphic relationships 【发布时间】:2018-09-17 11:13:06 【问题描述】:在我的网站(使用 laravel 5.6 和 laravel 护照的 api)我有两种类型的用户(教师和学生),将来会有更多。教师和学生实体非常不同,这意味着如果我将它们全部放在一个表中,则该表将很长,并且许多字段将具有空值。现在我有一个包含公共字段的用户表和另外两个表(教师和学生),我已经设置了来自用户的多态关系。我的问题是这是否是一个好方法,或者是否有其他方法可以更优雅地处理这个问题?
【问题讨论】:
最好不要在表中包含一堆空值。因此,每当您发现自己有多个空值时,通常意味着您需要拆分该表。 你选择了什么解决方案? 【参考方案1】:我会为教师创建 1 个表,为学生创建 1 个表,而不使用用户表/模型。这样,您可以将它们完全分开,而不必担心将来添加更多类型的用户。不断尝试将新用户融入您现有的用户模型中,这将是共享的,这是一件令人头疼的事情。我在开始时犯了同样的错误,最终不得不重新设计项目。
有很多 Laravel 多认证/多用户在线指南。 这里有一些可以帮助您入门:
https://medium.com/hello-laravel/multiple-authentication-system-laravel-5-4-ac94c759638a https://www.codementor.io/okoroaforchukwuemeka/9-tips-to-set-up-multiple-authentication-in-laravel-ak3gtwjvt此外,在某些情况下,将 User 模型用于多种类型的用户是有意义的。例如,您可能为一个用户拥有多个角色,其中大多数/所有字段都相同(不是您的场景)。在这种情况下,您可以为每个用户分配一个“角色”并检查角色的操作(例如,添加中间件以防止角色访问各种路由)。这是一个例子:
https://medium.com/@ezp127/laravel-5-4-native-user-authentication-role-authorization-3dbae4049c8a既然你说教师和学生实体非常不同,你应该把它们分开。
【讨论】:
以上是关于Laravel:多种用户类型的表结构,多态关系的主要内容,如果未能解决你的问题,请参考以下文章
laravel的多态关联--morphTo和morphMany