SerafimArts
@SerafimArts
Senior Notepad Reader

Как задать обратный `MappedSuperclass` в Doctrine?

Доброго времени суток.

Есть некоторый энтити:

// DocBlock опущен для чистоты
@ORM\Entity
@ORM\Table(name="users")
class User {}


Проблема в том, что энтити манагер не хочет видеть родителя при базовом наследовании:
class SomeUser extends User {}

class AnyUser extends User {}

$em->persist(new SomeUser);
// => Class "SomeUser" sub class of "User" is not a valid entity or mapped super class.


Указывать обратную связь с помощью `@ORM\MappedSuperclass` - проще застрелиться, т.к. потомок должен быть "чистым", он лишь переопределяет некоторые базовые характеристики (в частности дескрипшн, иконку и проч.) и подобных сущностей может быть ну очень много (пример с пользователями - лишь пример). Конечно в базовом классе (самом юзере) есть колонка, по которой можно определить "тип юзера", но это не значимо.

Т.е. подводя итог: проблема в том, что хотелось бы что бы маппинг "шёл по цепочке наследования", чего не происходит. Плюс есть небольшие затруднения в понимании `MappedSuperclass`, т.к. грамотно запустить его у меня так и не удалось.
  • Вопрос задан
  • 1000 просмотров
Решения вопроса 1
SerafimArts
@SerafimArts Автор вопроса
Senior Notepad Reader
Проблема решается, если в ребёнке указать `@ORM\AttributeOverrides({})` пустой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы