【问题标题】:Symfony2 Doctrine2 Inheriting an Entity in another BundleSymfony2 Doctrine2 继承另一个 Bundle 中的实体
【发布时间】:2012-07-24 15:52:16
【问题描述】:

尝试创建 2 个捆绑包。一个是门户网站,另一个是培训包。我难以理解的是如何在门户包中创建一个实体,该实体继承训练包中的实体(并覆盖训练包实体)。

PortalBundle
  Course Entity Extends TrainingBundle Course
    Add a Many to Many Relationship with another PortalBundle Entity


TrainingBundle
  Course Entity
    One to Many Relationship with Lesson Entity

这可能吗?我尝试将 TrainingBundle:Course 实体创建为 MappedSuperClass 但这不可能,因为 TrainingBundle:Course 实体具有一对多关系。

如果我尝试仅扩展 TrainingBundle:CourseEntity,我会收到错误消息“名称为‘Course’的表已经存在。

【问题讨论】:

  • 你是如何映射你的实体的? Yaml、XML、注解?
  • 目前我将它们映射为注释

标签: symfony doctrine-orm


【解决方案1】:

我认为您正在寻找映射的超类 - http://doctrine-orm.readthedocs.org/en/2.0.x/reference/inheritance-mapping.html

如果映射超类的限制不适用于您的用例,您可能需要查看类表继承来扩展您的实体。 Class Table Inheritance 在同一页的下方有更详细的描述。

【讨论】:

  • 映射的超类将不起作用,因为我想保持 TrainingBundle:Course 关系的机智(即 1-m 课程)以使 TrainingBundle 保持可移植性。如果我可以在 PortalBundle 中声明 InheritanceType 和 DiscriminatorColumn/Map,类表继承可能会起作用。接下来我会尝试一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多