【发布时间】:2013-08-14 21:33:53
【问题描述】:
在 Symfony2 应用程序中,我有一个 MainBundle 和可以启用或不启用的不同捆绑包。在 MainBundle 中,我需要有 Model 和一个基本的 Entity。在 OtherBundle 中的 Entity 与 MainBundle 中的 Entity 具有相同的表名。
MainBundle 中的 Fixtures 需要加载或不加载 MainBundle 以外的其他包:
MainBundle
- Model
- Entity (Table name "test")
- Fixtures
OtherBundle
- Entity (Table name "test")
- Fixtures
OtherBundle2
- Entity (Table name="test")
- Fixtures
如果我将 @ORM\MappedSuperclass 用于 Model,则 @ORM\Entity 用于 Entity > MainBundle 和 OtherBundle 中的 @ORM\Entity 然后 Doctrine2 停止并出现错误“表已存在”。
我不能使用继承表,因为我的模型不需要知道其他包中的其他实体。 @ORM\DiscriminatorMap 不能指向 OtherBundle。
有没有办法做到这一点?
【问题讨论】:
-
这个链接展示了如何在不同包中的实体之间建立动态关系。我不需要链接来自不同捆绑包的实体。我想在不同的包中拥有相同的实体名称和表。
-
您好,您的问题的明显解决方案是创建一个不同的实体(具有不同的表名)。您可以从同一模型扩展。这很明显,因为您说您不能进行继承,所以就数据库而言,您也不能。 (因为您使用的是 ORM)没有您的逻辑,我无法为您提供更准确的帮助。
-
我不明白:如果它是同一个实体和同一个表,为什么不把它放在主包中并使用它其他捆绑包。我没有看到捆绑包之间存在单向依赖的问题。
-
我也有同样的问题。我有多个指向同一张表的实体。我用它来集中我的上传。它可以工作,但由于外键,我无法删除项目
标签: symfony doctrine-orm multiple-inheritance mappedsuperclass