同一个表的多个外键 - Doctrine2

时间:2014-08-04 09:30:20

标签: mysql database-design doctrine-orm

我目前正在使用Doctrine2将工作时间跟踪应用程序从纯php / js移动到Symfony。 到目前为止,一切正常。但在周末之前,我偶然发现了将两个表移植到学说中的问题。

更确切地说: 我们的员工'工作时间信息来自外部系统。它记录员工的身份,当前时间以及是时钟还是时钟输出操作。 我们的应用程序将这些信息复制到其自己的数据库中,并使用它来为员工构建会计记录。所以,我们有一个如下结构:

* Table originalStamps
    - Column id
    - Column employeesBadgeNumber
    - Column timeOfStamping
    - Column kindOfAction (coming or leaving)

* Table accountingRecords
    - Column employeesID
    - Column dateOfStanping
    - Column comingTime
    - Column leavingTIme
    - Column idClockingIn
    - Column idClockingOut

如您所见,我们两次引用originalStamps表。 idClockingIn as idClockingOut可能为null,以防员工忘记输入和/或输出。

现在针对实际问题: 我无法让Doctrine2为同一个表创建两个外键。 根据{{​​3}},在Doctrine1中似乎是可能的。 你知道如何在Docrine2中再次使用它吗?或者我应该为这个特殊情况修改我的模型吗?

如果你将时钟与时钟的关系视为一对一的关系,我可以简单地引入两个新表,comingTimes和leavingTimes。这些可以由accountingRecords表引用,并且它本身将引用originalStamps表。

有关哪条路的帮助和评论?期待更长时间的解决方案将当前结构移植到Doctrine2或重新设计模型?

提前致谢
Faldon

1 个答案:

答案 0 :(得分:0)

最后我发现了我的错误。

所以,答案是肯定的。只需为同一个实体创建两个ManyToOne关系。 我首先失败了,因为我无意中为这两个实体的@JoinColumn定义分配了相同的名称。