Tengo un pequeño problema con el método Doctrine modelo hydrate()
. I utilizar este método para hidratar un objeto de modelo conrete de una matriz dada, así:Doctrine 1.2 método de hidratación - array para modelar el objeto
$model = new Doctrine\Model\Model;
$model->hydrate($model_array);
todo funciona perfecto cuando la hidratación de objetos simples withou sub-modelos anidados. Ahora el problema es que necesito hidratar (utilizando este método) un objeto que tiene objetos anidados (y algunos de ellos también tienen objetos anidados).
Si estuviera usando HYDRATE_RECORD
estaría bien, pero todos los registros de la consulta se devolverán como objetos lo que significa más consumo de memoria. Por lo tanto, estoy usando HYDRATE_ARRAY
y bajo demanda hidrato esa matriz de concreto a un objeto.
Supongamos que tengo un modelo A que tiene modelos anidados AB, AC (de uno a muchos), AD y AC tiene otro modelo anidado ACE. Después print_r
de la matriz A pudimos ver esta estructura:
A Array (
...
ab Array (...)
ac Array (
AC Array (
...
ace Array (...)
)
AC Array (
...
ace Array (...)
)
...
)
ad Array (...)
)
Normalmente después de usar hidrato yo asumiría que este sería mi objetivo:
A Object {
...
ab Object { ... }
ac Array (
AC Object {
...
ace Object { ... }
}
AC Object {
...
ace Object { ... }
}
...
)
ad Object { ... }
}
Pero en lugar de esto me sale esta estructura:
A Object {
...
ab Array (...)
ac Array (
AC Array (
...
ace Array (...)
)
AC Array (
...
ace Array (...)
)
...
)
ad Array (...)
}
Así que solo el modelo principal se convirtió a un objeto. ¿Conoces una forma de conseguir que todas las matrices de modelos anidados se conviertan en objetos como el supuesto resultado?
Y no, no puedo usar HYDRATE_RECORD
al consultar la base de datos.
@ j0k ¿por qué no debería agradecerle la respuesta? – shadyyx
Política del sitio, no hay cierres de sesión, gracias, ese tipo de cosas en la pregunta real, ya que no es parte de la pregunta. Bien en comentarios. – Orbling
Ver [este hilo] (http://meta.stackexchange.com/q/2950/182741). – j0k