据我所知,如果我想使用继承,则需要在supperclass映射信息中列出所有子类。
manual州:
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}
@ InheritanceType,@ DisciminatorColumn和@DiscriminatorMap必须 在作为映射实体一部分的最顶层类上指定 层次结构。
由于我正在开发一个将被多个应用程序重用的symfony包,这是一个主要问题。我想提供可以通过应用程序扩展的超类。这意味着在实现超类时我们不知道子类。
问题Creating portable Bundles with extendable entities in Symfony2正在解决同样的问题。
这里的问题是:我有什么选择可以解决这个限制?
在我需要的区域是一个订单。应用程序应该有可能实现它自己的订单项子类型。我想出了这个解决方案,但这需要很多额外的类来获得类似继承的东西。
http://www.gliffy.com/pubdoc/4293547/L.png
我很乐意看到更好/更短的解决方案。