次の抽象クラスを作成しました。これは、単一テーブルの継承を使用し、 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
が、上位の抽象クラスを拡張するクラスとしてマップされるように)マップされることです。
これはまったく可能ですか?