I created the following abstract class that uses unidirectional table inheritance and maps subclasses to the 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; }
Let's say I extend the AbstractEntity abstract class to some classes:
class GreenEntity extends AbstractEntity {} class BlueEntity extends AbstractEntity {}
And expand them with a few more subclasses
class GreenEntityChildOne extends GreenEntity {} class GreenEntityChildTwo extends GreenEntity {} class BlueEntityChildOne extends BlueEntity {} class BlueEntityChildTwo extends BlueEntity {}
Now, for example, when I create an instance of GreenEntityChildOne and store it in the database, it throws an exception that I do not have for it.
I am trying to make GreenEntityChildOne appear as GreenEntity (or rather, every class that extends a class below AbstractEntity is displayed as a class that extends an upper abstract class).
Is it possible?
oop php orm doctrine2 discriminator
Maneating koala
source share