php - 具有角色、角色特定字段的 MySQL 用户?

标签 php mysql database laravel database-design

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 模型(带有 suppliersshops 表)。

然后在 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/

相关文章:

swift - Firebase以两种不同的方式获取子数据

php - 使用 mysql 存储评论或将它们写入 PHP 中的文件或 XML 文件并以这种方式显示在主页上会更好吗?

java - 尝试连接到 MS Excel 2007 [不创建 DSN] - 错误 : Data source name not found and no default driver specified

php - 回溯迷宫生成(将所有内容转换为二维数组)

php - 使用 PHP 调整图像大小

php - 用php插入mysql

php - 多个单元未更新到 Mysql

php - 限制在带变量的 SQL 语句中不起作用

javascript - 当用户在表单上的文本框中键入内容时如何显示建议或相关名称

mysql - 在与 MYSQL 相同的查询 NODE JS 中选择并插入