我有一个应用程序,用户可以是供应商或商店。 现在这两个角色具有非常不同的角色特定字段。
基本上,商店可以向供应商下订单。因此,商店可以下订单,供应商将收到这些订单。
我会把这些字段放在哪里进行良好实践?
- 将它们全部添加到 User 类上,具有可为空的类型(似乎不正确!
- 为每个角色创建不同的类。所以我们有一个带有user_id的供应商类和一个带有user_id的商店类,我必须使用 $user->supplier-> 字段或$user->shop->字段来查询这些字段...
这些似乎都不是要走的路。有什么想法吗?谢谢!
不必坚持使用单个users
表。您可以有一个供应商模型和一个车间模型(具有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
用户可以拥有多个商店或供应多个商店吗?您的第二个选择似乎没问题。
用户有很多:供应商,商店
- 编号
-名字
供应商属于,拥有之一:用户
- 编号
- user_id
- fields_supplier
商店属于,有一个:用户
- 编号
- user_id
- fields_shop
$user->supplier->fields_supplier;
$user->shop->fields_shop;
$supplier->user->name;
$shop->user->name;
--如果您有更多关于您希望它如何工作的信息,它会有所帮助。
供应商"是"一方"("个人"或"组织"(扮演的角色
您的商店可能会从供应商那里获得目录,并可能向他们索取报价。
您的商店创建"采购订单"并将其发送给供应商,他们向您发送"订单响应">
供应商不是用户。不过,您可以为他们的员工创建"用户">
为什么不直接使用像Odoo这样的现有ERP?