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