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