0

我不確定在我的Laravel 4應用程序中表達模型之間關係的最佳方式。我有三種模式,用於將信息存儲在數據庫中:EmployerEmployeeUser。基本上,EmployerEmployee型號將包含有關User型號的元信息。我想下面的表達式是我能想到的最好的:如何表達這些模型關係

  • Employer有很多Employee
  • Employee屬於一個Employer
  • Employer屬於一個User
  • Employee屬於一個User

在數據庫中,我將有一個user_id外鍵在employersemployees表中引用users表中的id字段。這是模擬此域的最佳方式嗎?

+0

要明確,用戶可以是僱主或僱員,對嗎?如果是這樣,您可能需要[多態關係](http://laravel.com/docs/eloquent#polymorphic-relations) – fideloper

回答

0

這取決於。一名員工可以有多個僱主嗎?員工可以在多個地方工作嗎?如果員工離開(並失去歷史記錄),您是否想要刪除記錄?

如果您可以在員工離職時刪除員工記錄,則只需在employee表中擁有一個employer_id字段。但只是準備好,如果將來需要它們,您將無法輕鬆添加功能。

如果要爲未來做好準備:你可能希望有一張桌子,上面寫着

employer_id 
employee_id 
start_date 
end_date 

即使如此,如果一位僱員,然後離開你有相同的employer_id,EMPLOYEE_ID記錄。所以這使得它看起來像你需要一個內部鑰匙,而且說:

employment_record_id // this is the primary key 
employer_id 
employee_id 
start_date 
end_date 

我不知道用戶到底是什麼,但問自己同樣的問題類型:

  1. 用戶可以存在與員工記錄
  2. 你能有員工未經用戶記錄
  3. 可以將員工的用戶記錄更改
  4. 可以在用戶的​​員工記錄更改
+0

不,一名員工只能有一名僱主。另外,如果員工離開,則不會保留任何記錄。 – Iain