Ich habe eine Entität, die benutzerdefinierte Hydrationslogik erfordert. Ich versuche, einen benutzerdefinierten Doctrine2-Hydrator für diese Entität zu erstellen. Das Projekt wird mit Symfony3 geschrieben, so schrieb ich eine einfache:Doctrine2 benutzerdefinierte Hydrator für einzelne Einheit
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));
}
}
Das Hydrator in config.yml
registriert wurde:
orm:
entity_managers:
default:
hydrators: [CustomHydrator]
Leider ist es nicht überall genannt wird und ich nicht alle Unterlagen zu finden, die erklären würde, der Prozess des Einhängens von Hydratatoren in Doctrine.
Die Frage ist: Wie erstellt man benutzerdefinierte Lehre Hydrator, so dass eine einzelne Entität oder eine Teilmenge der abgebildeten Entitäten auf diese Weise automatisch hydratisiert werden würde?
Danke, aber ich versuche einen Weg zu finden, Doctrine zu zwingen, diese Entity * automatisch * zu hydratisieren, ohne den Namen des Hydrators zu erwähnen. Es gibt ein Projekt mit Dutzenden von Entitäten und es ist einfach nicht möglich, jeden 'find *' Aufruf zu finden. –
Dann sollte der Standard-Hydrator, wie in der Link erklärt, den Trick (nie selbst ausprobiert, aber wenn es der Standard-Hydrator ist, denke ich sogar finden * Methoden werden es verwenden) – Boulzy
So ist es nicht möglich, einen Hydrator für erstellen die Entität direkt? Muss ich meinen eigenen globalen Hydrator für den gesamten 'EntityManager' erstellen? –