這是我的基礎/父母實體,因此它的孩子正在使用他們自己的表格。單個表繼承實體是否可以擴展一個類表繼承實體?
/** * @ORM\Entity * @ORM\Table(name="layer_object") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"service"="Service", "aircraft"="Aircraft", ...}) */ class LayerObject {}
飛機實體。一個做得好的簡單小孩
/** * @ORM\Entity * @ORM\Table(name="aircraft") */ class Aircraft extends LayerObject
服務實體。一個複雜的孩子,它本身正在使用單個表繼承。
/** * @ORM\Entity * @ORM\Table(name="service") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"ground"="Ground", "onboard"="Onboard"}) */ class Service extends LayerObject {}
服務實體
/** * @ORM\Entity */ class Ground extends Service {}
app/console doctrine:schema:validate
的孩子沒有發現錯誤,但是app/console doctrine:schema:update --force
只是不會產生「服務」表中,應使用單獨的表中的一個繼承。看起來像服務實體定義簡單地被忽略。
當然,我可以手工創建這個表的SQL,但應用程序將會增長,並且在某些時候我需要使用遷移。
任何人都可以在某個方向指向我嗎?謝謝。
發現重複的,但目前還沒有答案爲止,請參閱:Doctrine 2 multiple level inheritance
編輯:
當我使用類表繼承了(爲Service
實體@ORM\InheritanceType("JOINED")
)第2級太它工作得好。請參閱:Doctrine2 Multiple level inheritance
非常感謝。這基本上意味着:'在最頂層的類中選擇一種繼承類型並堅持下去'。現在這對我的應用程序來說很好... – virtualize