Php 继承主义';嵌入

Php 继承主义';嵌入,php,inheritance,doctrine,value-objects,Php,Inheritance,Doctrine,Value Objects,是否可以对嵌入到条令实体中的值对象使用继承 我想的情况是: 我有一个实体,它有一个嵌入的值对象。该值对象具有以下层次结构: class myEntity { /** @Embedded(class = "baseValueObject") */ private $value_object; ... } class baseValueObject {...} class valueObject1 extends baseValueObject{...} class val

是否可以对嵌入到条令实体中的值对象使用继承

我想的情况是:

我有一个实体,它有一个嵌入的值对象。该值对象具有以下层次结构:

class myEntity {
    /** @Embedded(class = "baseValueObject") */
    private $value_object;
    ...
}

class baseValueObject {...}
class valueObject1 extends baseValueObject{...}
class valueObject2 extends baseValueObject2{...}
如果我将实体定义为具有可嵌入的baseValueObject,那么当我使用schema工具更新我的db schema时,不会发生任何事情,所以我想这不是实现的方法

我考虑的另一个选项是对实体使用单表继承来创建使用一个值对象的子实体,并为另一个值对象创建另一个子实体。像这样:

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{...}

正确的方法是什么?甚至可以这样做吗?

如果您想在字段中使用您的值对象,那么您应该在原则中定义新类型

如果要从基继承属性,则应使用
@MappedSuperclass
注释


当您希望通过创建特定实体按特定属性分割实体时,应使用
@embeddeble
。所以不能使用值对象作为目标。根据文档(我无法共享第三个链接)。

如果您想从一个可嵌入的扩展到另一个,您需要将父属性设置为受保护的
私有的