I have an application where a User can be a Supplier or a Shop. Now these 2 roles have very different role-specific fields..
基本上,商店可以向供应商下订单。因此,商店可以下订单,供应商将收到这些订单。
为了良好的实践,我应该把这些字段放在哪里?
- 将它们全部添加到 User 类中,具有可为 null 的类型(看起来不对!)
- 为每个角色创建一个不同的类。所以我们有一个带有 user_id 的 Supplier 类和一个带有 user_id 的 Shop 类,我将不得不使用 $user->supplier->field 或 $user->shop->field... 查询这些字段
这些似乎都不是可行的方法。有任何想法吗? 谢谢!
最佳答案
您不必坚持使用单个 users
表。您可以有一个 Supplier 模型和一个 Shop 模型(带有 suppliers
和 shops
表)。
然后在 config/auth.php
文件中,您可以使用 Eloquent 驱动程序但使用不同的模型来设置新的身份验证提供程序。然后,您可以将这些提供者分配给您创建的任何新守卫。
您可以在此处阅读有关身份验证和授权的更多信息: https://laravel.com/docs/5.4/authentication
https://laravel.com/docs/5.4/authorization
编辑
在关于多态关系的评论中提到之后,我认为这将更好地适用于这种类型的关系(多种类型的用户,每个用户都有自己的一组字段)。
在这里阅读更多:
https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations
关于php - 具有角色、角色特定字段的 MySQL 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399848/