是否可以在Doctrine实体中嵌入值对象并使用继承?
我所考虑的情况是:
我有一个实体,其中包含一个嵌入式值对象。该值对象具有以下层次结构:
class myEntity {
/** @Embedded(class = "baseValueObject") */
private $value_object;
...
}
class baseValueObject {...}
class valueObject1 extends baseValueObject{...}
class valueObject2 extends baseValueObject2{...}
如果我将我的实体定义为嵌入式的baseValueObject,当我使用schema-tool来更新我的数据库模式时,什么也没有发生,所以我猜那不是正确的方法。
另一个选项是在实体上使用单表继承来创建一个子实体,该子实体使用其中一个值对象,另一个子实体用于另一个值对象。像这样:
class myEntity {
/** @Embedded(class = "baseValueObject") */
private $value_object;
...
}
class myEntityA extends myEntity {
/** @Embedded(class = "valueObject1") */
private $value_object;
...
}
class myEntityB extends myEntity {
/** @Embedded(class = "valueObject2") */
private $value_object;
...
}
class baseValueObject {...}
class valueObject1 extends baseValueObject{...}
class valueObject2 extends baseValueObject2{...}
什么是正确的方法?这种方式可能行得通吗?