Я использую сопоставление наследования Doctrine в проекте, который создает набор уникальных объектов, каждый из которых расширяет базовый объект. Поскольку маршрут не знает, какие сущности идут с какими базовыми строками, мне приходится дважды запрашивать базу данных, чтобы получить нужную строку из правильного набора полей:
// in a controller action:
// locate the event entity record and determine the event type
$entity = 'AdminEvents\Entity\Event';
$event = $this->getEntityManager()->find($entity, $eventID);
$eventType = $this->getEntityManager()->getClassMetadata(get_class($event))->discriminatorValue;
// locate the record we're really looking for in the unique extended entity
$entity = 'AdminEvents\Entity\\' . $eventType;
$event = $this->getEntityManager()->find($entity, $eventID);
Есть ли более чистый способ сделать это?