Ich habe ein kleines Problem mit Doctrine model hydrate()
method. Ich verwende diese Methode, um ein Objekt eines Betonmodells aus einem gegebenen Array wie folgt zu hydratisieren:
Alles funktioniert perfekt, wenn Sie einfache Objekte mit verschachtelten Untermodellen hydratisieren. Jetzt ist das Problem, ich muss (mit dieser Methode) ein Objekt hydratisieren, das verschachtelte Objekte hat (und einige von ihnen haben auch verschachtelte Objekte).
Wenn ich HYDRATE_RECORD
verwenden würde, wäre das in Ordnung, aber alle Datensätze aus der Abfrage würden als Objekte zurückgegeben, was mehr Speicherverbrauch bedeutet. Deshalb benutze ich HYDRATE_ARRAY
und hydratiere auf Wunsch dieses konkrete Array zu einem Objekt.
Nehmen wir an, ich ein Modell A, die Modelle AB, AC (mit ein bis viele), AD und AC hat eine weitere verschachtelte Modell ACE verschachtelt ist. Nach print_r
des A-Arrays konnten wir diese Struktur sehen:
Normalerweise würde ich nach der Verwendung von Hydrat annehmen, dass dies mein Objekt wäre:
%Vor%Aber statt dessen bekomme ich diese Struktur:
%Vor%Also wurde nur das Hauptmodell in ein Objekt konvertiert. Wissen Sie, wie alle verschachtelten Modellarrays in Objekte wie das angenommene Ergebnis konvertiert werden können?
Und nein, ich kann nicht verwenden HYDRATE_RECORD
, wenn die Abfrage der DB.
Ich versuche, dies nach bestem Wissen meiner Lehre zu beantworten, was nicht viel ist, weil ich mich nie direkt mit der Flüssigkeitszufuhr befasst habe.
Das Problem bei der Verwendung eines Arrays als Hydrationsmethode besteht darin, dass Sie grundsätzlich alle Metadaten verlieren, die der ursprünglichen Abfrage zugeordnet wurden, vor allem die Tabellennamen.
Eine Lösung könnte darin bestehen, Ihre eigene Hydrationsmethode zu schreiben, die das Array zurück in Objekte konvertiert.
Tags und Links php doctrine doctrine-1.2