Настраиваемый гидратор Doctrine2 для одного объекта

У меня есть объект, который требует пользовательской логики гидратации. Я пытаюсь создать собственный гидратор Doctrine2 для этой сущности. Проект написан с использованием Symfony3, поэтому я написал простой:

final class CustomHydrator extends AbstractHydrator
{
protected function hydrateAllData()
{
return array_map(function(array $data) {
// I'm doing that custom logic here
$computedData = /* ... */
return new EntityClass($computedData);
}, $this->_stmt->fetchAll(\PDO::FETCH_ASSOC));
}
}

Этот гидратор был зарегистрирован в config.yml:

orm:
entity_managers:
default:
hydrators: [CustomHydrator]

К сожалению, он нигде не вызывается, и мне не удалось найти какую-либо документацию, объясняющую процесс подключения гидраторов в Doctrine.

Вопрос в том: Как создать собственный гидратор Doctrine, чтобы таким образом автоматически гидратировался отдельный объект или поднабор отображенных объектов?

2

Решение

Может быть, вы могли бы создать второй entityManager, установить там гидратор по умолчанию и обработать эти объекты с ним?

orm:
entity_managers:
default:
...
myCustom:
...
2

Другие решения

Попробуйте следующую конфигурацию в вашем config.yml:

orm:
entity_managers:
default:
hydrators:
CustomHydrator: \Your\Namespace\To\CustomHydrator

Затем в своем хранилище (или где бы вы ни извлекали ваши сущности) вы должны сделать свои собственные запросы и использовать свой гидратор в getResult метод:

$query->getResult('CustomHydrator');

Кроме того, уже был задан вопрос о том, как изменить стандартный гидратор Doctrine, если вам нужно, чтобы ваш гидратор вызывался при каждом запросе: Как установить гидратор по умолчанию в Doctrine?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector