Это должен был быть комментарий, но моя репутация слишком низкая, извините.
К сожалению, полиморфная ассоциация не совсем совпадает с CTI (наследование таблиц классов): CTI требует родительскую таблицу с тем же идентификатором длявсе подклассы.
CTI может работать в большинстве случаев, но это может быть проблемой, если вы хотите создать полиморфную связь между существующими сущностями, которые уже имеют свой собственный идентификатор и / или, возможно, могут иметь другой тип идентификатора.
Кроме того, CTI требует создать запись в родительской таблице для каждого подкласса, что бесполезно для полиморфной ассоциации.Полиморфная ассоциация не должна требовать какой-либо таблицы, она должна просто объединять существующие таблицы с условиями (id, type).Я полагаю, что Doctrine требуется родительская таблица для простоты / производительности.
Когда CTI не является решением, я предлагаю эмулировать полиморфную ассоциацию на уровне репозитория, т.е. создать абстрактный репозиторий с атрибутом $ type и реализоватьметод polymorphicJoin, который автоматически присоединяет текущий запрос к целевой таблице с условиями id / type.Затем расширяет абстрактный репозиторий вашими подклассами Repositories и при необходимости вызывает метод polymorphicJoin в ваших методах поиска / выбора.
Было бы замечательно, если бы такая связь была реализована в Doctrine.