ZF2 - Verwendung des Hydrator / exchangeArray () zum Auffüllen eines verschachtelten Objekts

9

Ich habe ein Objekt mit Werten, die in meiner Datenbank gespeichert sind. Mein Objekt enthält auch ein anderes Objekt, das nur mit seiner ID (Fremdschlüssel) in der Datenbank gespeichert wird.

Ссылка

Vor der Funktion Hydrator/exchangeArray in ZF2 würden Sie einen Mapper verwenden, um alles zu erfassen, was Sie zum Erstellen des Objekts benötigen. Jetzt versuche ich, diese zusätzliche Ebene zu eliminieren, indem ich nur Hydration/exchangeArray verwende, um meine Objekte zu füllen, aber bin ein bisschen fest beim Erstellen des verschachtelten Objekts.

Sollte meine Entität die Tabelle des Inner-Objekts injizieren, damit ich sie erstellen kann, wenn die ID an mein 'exchangeArray' übergeben wird?

Hier sind Beispielobjekte als Beispiel.

%Vor%

Beim Senden von square_id an die exchangeArray () -Funktion meines Village. Es würde die mapTable erhalten und Hydrator benutzen, um das Quadrat unter Verwendung der ID zu ziehen, die ich habe.

Es scheint nicht richtig zu sein, Mapper-Instanzen in meiner Entität zu haben, da ich dachte, dass sie von irgendetwas getrennt sein sollten, außer ihren eigenen Entity-spezifischen Parametern und Funktionen?

    
Dominic Watson 06.10.2012, 21:34
quelle

1 Antwort

5

Ich denke, Sie können von Zend\Stdlib\Hydrator\Strategy\StrategyInterface profitieren.

Wenn Sie eine Strategieklasse erstellen, können Sie diese an Ihren Hydrator anhängen. Wenn also ein bestimmter Schlüssel gefunden wird (in diesem Fall square_id), übergibt der Hydrator die Daten an die Strategieklasse entweder extract() oder hydrate() .

Die Strategieklasse kann dann alles tun, was erforderlich ist, um die Daten zu hydratisieren und zu extrahieren. Ich verwende ein paar Strategieklassen, die einfach getArrayCopy() / exchangeArray() und andere Strategien, die mehrere Entitäten hydratisieren / extrahieren.

    
DrBeza 08.10.2012 14:02
quelle

Tags und Links