2017-04-13 91 views
3

我有一個應用程序,用戶可以成爲供應商或商店。 現在這些兩個角色具有非常不同的角色特定的領域..具有角色,角色特定字段的MySQL用戶?

基本上,一個店鋪可以使訂單向供應商..所以,一個店鋪可以使訂單和供應商將收到這些訂單。

我在哪裏可以把這些領域的良好做法?

  • 加入他們所有的User類,可空類型(看起來不正確!)
  • 創建爲每個角色不同的類。因此,我們有一個供應商類與user_id和商店類與user_id,我將不得不使用$ user-> supplier->字段或$ user-> shop->字段查詢這些字段...

這兩者似乎都沒有辦法走。有任何想法嗎? 謝謝!

+0

我認爲這真的取決於您的應用程序的上下文。嘗試提供有關應用程序其餘部分的更多信息,因爲這有助於確定正確的方式。 – Jeffrey

+0

一家商店可以向供應商下單。因此,一家商店可以下訂單,供應商將收到這些訂單。 – Notflip

+0

勾畫出兩種方式,包括'SELECTs'。完成後,你會回答你自己的問題。 (也就是說,還沒有足夠的信息來通知您。) –

回答

3

您不必堅持使用單個users表。您可以擁有供應商型號和商店型號(使用suppliersshops表格)。

然後在config/auth.php文件中,您可以使用Eloquent驅動程序設置新的auth提供程序,但使用不同的型號。然後,您可以將這些提供程序分配給您創建的任何新的警衛。

您可以在此處詳細瞭解身份驗證和授權: https://laravel.com/docs/5.4/authentication

https://laravel.com/docs/5.4/authorization

編輯

它在大約多態性關係的評論中提到,我認爲這將更好地應用了這種類型的關係(多種類型的用戶,每種都有自己的一組字段)。

在這裏閱讀更多:

https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations

+0

如果多態性僅適用於身份驗證,則這將起作用。如果還有其他多態性方面的信息,例如:「訂單可以屬於供應商或商店」,則Laravel支持多態關係(請參閱:https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations) – Jeffrey

+0

正在考慮這個選擇。但是,這樣做不是很花時間嗎?角色的整個想法不再適用了,對吧? – Notflip

+0

以及如果管理員角色出現?這可以看到所有的訂單,然後我必須創建另一個auth提供商?對? – Notflip

1

用戶可以擁有多個店鋪或供應倍數?你的第二個選項似乎很好。

用戶的hasMany:供應商,商店
- ID
- 命名

供應商屬於關聯,hasOne:用戶
- ID
- USER_ID
- fields_supplier

belongsTo,hasOne:用戶
- ID
- USER_ID
- fields_shop

$user->supplier->fields_supplier;
$user->shop->fields_shop;
$supplier->user->name;
$shop->user->name;

- 如果你對你怎麼想它的工作更多的信息,這將有助於。

+0

感謝您的回答。現在的問題是,供應商和商店都有訂單,商店發送它們,供應商收到它們..但是如果我打電話給$ user-> orders ..或者你會這樣做:$ user->商城 - >訂單和$用戶>廠商名錄>訂單 – Notflip

+0

是它像一個流程:1.店創建訂單,訂單2.可用到供應商,供應商3.採用的是訂單和滿足呢? – PaulELI

+0

是的!那是對的! – Notflip

1

「供應商」是一個「黨」(「個人」或「本組織」)扮演的角色

你的店可能會從供應商一個目錄,並可以從中索取報價。

您的商店創建「採購訂單」,並將其發送給供應商,而他們給你「訂單響應」

供應商不是用戶。您可以爲他們的員工創建「用戶」,但

爲什麼不使用像Odoo這樣的現有ERP?

相關問題