У меня есть такое наследование классов
/**
* @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 {
Когда я выполнил schema: create, instad of doctrine создал столбец дискриминатора в классе Person, он создал таблицу лиц с полями, принадлежащими ему, и не более того, затем создал таблицу insurees с столбцами таблицы лиц и столбцами, принадлежащими сам, а затем создал таблицу third_parties со столбцами из таблиц person и insurees и столбцами, принадлежащими ему самому. Когда я выполнил EntityManager :: flush (), все столбцы из таблицы third_parties были заполнены, а обе другие таблицы были пустыми. Что мне не хватает? Я следил за документами с официального сайта доктрины и, кажется, все сделал правильно.
@JannesBotis поставил это как ответ, я отмечу его как решенное. Мне стыдно, что я допустил эту опечатку и не заметил ее, даже проверяя код несколько раз. Спасибо, проблема решена!






В Аннотация @InheritanceType есть опечатка:
@@ORM\InheritanceType("JOINED")
У вас есть двойной "@".
Это приводит к игнорированию аннотации.
Удалите один из символов «@».
У вас есть тип в "@@ ORM \ InheritanceType (" JOINED ")", удалите двойной "@".