Kdyby/Doctrine a dědičnost
- Azathoth
- Člen | 495
Zdravím,
mám problém s Doctrine: mám entity: abstract class A, class B extends Class A, class C extends Class B, class D extends class A. V anotaci ke třídě A mám:
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "a" = "A",
* "b" = "B",
* "d" = "D",
* })
*/
a ve třídě B mám:
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "b" = "B",
* "c" = "C"
* })
*/
A problém je v tom, že když si uložím do databáze objekt třídy C, tak do sloupce discr v tabulce třídy A se mi narve “c”. Ale proč? A jak mám správně vyřešit takovouto zřetězenou dědičnost?
Těším se na odpovědi.
P.S.: Existuje nějaký anglický pojem pro takovouto zřetězenou dědičnost? Multiple inheritance jaksi není ono a na jiné pojmy jsem nenarazil.
Editoval Azathoth (26. 8. 2014 19:08)
- Majkl578
- Moderator | 1364
Dědičnost entit se definuje pouze na nejvyšší
společné entitě. Ostatní obsahují pouze @ORM\Entity
.
Existuje nějaký anglický pojem pro takovouto zřetězenou dědičnost?
Class Table Inheritance.
http://docs.doctrine-project.org/…mapping.html
Mimochodem, s Nette dotaz nesouvisí.
- Azathoth
- Člen | 495
O Class Table vím, ale to moc nepopisuje ten problém s tím C extends B,
B extends A. Myslel jsem, jestli existuje oběcně pro tuhle dědičnost
nějaký pojem v PHP.
A jak to má fungovat? Když v tabulce a je ve sloupci discr c, tak jak má
ten objekt C uložené properties, které jsou definované v B?
Já vím, že to nesouvisí s Nette, ale souvisí to s Kdyby/Dosctrine, tak
proto se ptám tady, v pluginech.