【发布时间】:2015-09-16 08:20:07
【问题描述】:
我创建了以下抽象类,它使用single table inheritance 并将子类映射到DiscriminatorColumn model。
/**
* @Entity
* @Table(name="entity")
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="model", type="string")
* @DiscriminatorMap({
* "green" = "model\GreenEntity",
* "blue" = "model\BlueEntity"
* })
*/
abstract class AbstractEntity
{
/** @Id @Column(type="string") */
protected $entity_id;
}
假设我通过一些类扩展了抽象类AbstractEntity:
class GreenEntity extends AbstractEntity {}
class BlueEntity extends AbstractEntity {}
并通过更多的子类扩展它们
class GreenEntityChildOne extends GreenEntity {}
class GreenEntityChildTwo extends GreenEntity {}
class BlueEntityChildOne extends BlueEntity {}
class BlueEntityChildTwo extends BlueEntity {}
现在,例如,当我实例化 GreenEntityChildOne 并将其持久化到数据库时,它会抛出我没有映射的异常。
我想要做的是让GreenEntityChildOne 被映射为GreenEntity(或者更确切地说,每个扩展AbstractEntity 下面的类的类都被映射为扩展上抽象类的类)。
这可能吗?
【问题讨论】:
-
如果你在某处提到这是 Doctrine 2 可能会有所帮助(如果是...)
-
@markdwhite
doctrine2是标签之一
标签: php oop orm doctrine-orm discriminator