在Symfony2中存储与Doctrine的开放式对象关系

时间:2014-04-09 01:00:11

标签: symfony orm doctrine-orm entity entity-relationship

我正在将调度程序和任务管理器构建到Symfony2应用程序中。我目前定义了4个任务实体,我们称之为任务A,任务B,任务C和任务D - 每个都有不同的结构,这就是为什么我把它们分成4个独立的实体而不是一个实体然后留下一堆列空白。

我的应用程序允许用户创建新的Schedule实体/对象,它将具有各种数量的任务A-D。我现在需要做的是设置任务依赖性。因此,任务A 3可能取决于任务B 2的完成,任务C 4可能取决于任务D 1。

我正在试图找出存储这些依赖项的最佳方法;每个任务只有一个依赖项,它可以是其他三种类型中的任何一个。我是否要求每个任务实体都有一个列用于其他任务?例如:Task A实体是否需要具有B Dependency,C Dependency和D Dependency列,我必须单独检查?或者我错过了一些让我将关系存储在一列任意实体​​中的东西?我看过Doctrine的对象类型,但是当我把它拿回来时,我不确定它会是什么样子。我知道它进入时它是什么类型的物体吗?

1 个答案:

答案 0 :(得分:0)

我认为你不想使用对象类型 - 这是一个序列化的php对象。

如果您的不同任务在结构上确实只是略有不同,您可以使用单表继承将所有任务保存在一个表中,然后使用自引用一对一关系来管理依赖关系。是的,该表对于不同的任务类型将具有额外的空列,但您的实际实体将彼此独立。

此处概述了继承映射策略的一些注意事项:http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html#single-table-inheritance

自我引用关联在此处的Doctrine文档中进行了演示:http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#one-to-one-self-referencing