Laravel: Table 多用户类型结构,多态关系
Laravel: Table structure for multiple users types, polymorphic relationships
在我的站点中(api 使用 laravel 5.6 和 laravel passport)我有两种类型的用户(教师和学生),将来会有更多。教师和学生实体非常不同,这意味着如果我将它们全部放在一个 table 中,table 将会很长并且许多字段将具有空值。现在我有一个用户 table 具有公共字段和另外两个 tables(教师和学生),我已经建立了来自用户的多态关系。我的问题是这是否是一个好方法,或者是否有其他方法可以更优雅地处理这个问题?
我会为教师创建 1 个 table,为学生创建 1 个 table,而不使用用户 table/model。这样您就可以将它们完全分开,而不必担心将来会添加更多类型的用户。不断尝试让新用户适应您现有的共享用户模型是一件令人头疼的事情。我在开始时犯了同样的错误,最终不得不返工该项目。
网上有很多 Laravel multi-auth / multi-user 的指南。
以下是一些可以帮助您入门的信息:
- 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
此外,在某些情况下,对多种类型的用户使用用户模型是有意义的。例如,您可能有一个用户的多个角色,其中 most/all 个字段相同(不是您的情况)。在这种情况下,您可以为每个用户分配一个 'role' 并检查角色的操作(例如添加中间件以防止角色访问各种路由)。这是一个例子:
既然你说教师和学生实体有很大不同,你应该把它们分开。
在我的站点中(api 使用 laravel 5.6 和 laravel passport)我有两种类型的用户(教师和学生),将来会有更多。教师和学生实体非常不同,这意味着如果我将它们全部放在一个 table 中,table 将会很长并且许多字段将具有空值。现在我有一个用户 table 具有公共字段和另外两个 tables(教师和学生),我已经建立了来自用户的多态关系。我的问题是这是否是一个好方法,或者是否有其他方法可以更优雅地处理这个问题?
我会为教师创建 1 个 table,为学生创建 1 个 table,而不使用用户 table/model。这样您就可以将它们完全分开,而不必担心将来会添加更多类型的用户。不断尝试让新用户适应您现有的共享用户模型是一件令人头疼的事情。我在开始时犯了同样的错误,最终不得不返工该项目。
网上有很多 Laravel multi-auth / multi-user 的指南。 以下是一些可以帮助您入门的信息:
- 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
此外,在某些情况下,对多种类型的用户使用用户模型是有意义的。例如,您可能有一个用户的多个角色,其中 most/all 个字段相同(不是您的情况)。在这种情况下,您可以为每个用户分配一个 'role' 并检查角色的操作(例如添加中间件以防止角色访问各种路由)。这是一个例子:
既然你说教师和学生实体有很大不同,你应该把它们分开。