Наследование таблиц в классе в doctrine2 не создает таблицы должным образом - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть классовое наследование, подобное этому

 /**
 * @ORM\Entity
 * @ORM\Table(name="persons")
 * @@ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="person_types", type="string")
 * @ORM\DiscriminatorMap({
 *                        "insuree" = "Insuree",
 *                        "third_party" = "ThirdParty"
 *                      })
 */
abstract class Person {


/**
 * @ORM\Entity
 * @ORM\Table(name="insurees")
 */
abstract class Insuree extends Person

/**
 * @ORM\Entity
 * @ORM\Table(name="third_parties")
 */
final class ThirdParty extends Insuree {

Когда я выполнил схему: create, вместо доктрины, создал столбец дискриминатора в классе Person, он создал таблицу лиц с принадлежащими ему полями и ничего более, затем создал таблицу страхователей со столбцами таблицы персон и принадлежащих ему столбцов, а затем создал таблицу third_parties со столбцами из таблиц лиц и страховых компаний и принадлежащих ему столбцов. Когда я выполнил EntityManager :: flush (), все столбцы из таблицы third_parties были заполнены, а обе другие таблицы были пусты. Чего мне не хватает? Я следовал документам с официального сайта доктрины и, кажется, все сделал правильно.

1 Ответ

0 голосов
/ 03 сентября 2018

В аннотации @ InheritanceType есть опечатка :

@@ORM\InheritanceType("JOINED")

У вас есть двойное "@".

Это приводит к игнорированию аннотации.

Удалить один из "@".

...