gpt4 book ai didi

php - Doctrine 的可嵌入物的继承

转载 作者:IT王子 更新时间:2023-10-29 00:04:15 25 4
gpt4 key购买 nike

是否可以对嵌入在 Doctrine 实体中的值对象使用继承?

我想到的情况是:

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

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

class baseValueObject {...}
class valueObject1 extends baseValueObject{...}
class valueObject2 extends baseValueObject2{...}

如果我将我的实体定义为具有可嵌入的 baseValueObject,当我使用模式工具更新我的数据库模式时没有任何反应,所以我想这不是实现它的方法。

另一种选择 我正在考虑的是在实体上使用单表继承来创建一个子实体,该子实体使用一个值对象,另一个子实体用于另一个值对象。像这样:

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

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

最佳答案

如果您想从一个可嵌入对象扩展另一个可嵌入对象,您需要将父属性设置为protected 而不是private

https://github.com/doctrine/doctrine2/issues/4097

关于php - Doctrine 的可嵌入物的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com