Ho un piccolo problema con il metodo Doctrine modello hydrate()
. Uso questo metodo per idratare un oggetto di modello conrete da un dato array in questo modo:Doctrine 1.2 hydrate method - array to model object
$model = new Doctrine\Model\Model;
$model->hydrate($model_array);
tutto funziona perfetto quando idratante oggetti semplici withou sottomodelli nidificate. Ora il problema è che ho bisogno di idratare (usando questo metodo) un oggetto che ha oggetti nidificati (e alcuni di essi hanno anche oggetti nidificati).
Se si stesse utilizzando HYDRATE_RECORD
, ciò andrebbe bene, ma tutti i record della query verrebbero restituiti come oggetti, il che significa maggiore consumo di memoria. Pertanto sto usando HYDRATE_ARRAY
e su richiesta idrato quella matrice concreta a un oggetto.
Supponiamo di avere un modello A che ha modelli annidati AB, AC (da uno a molti), AD e AC ha un altro modello ACE annidato. Dopo print_r
dell'array A abbiamo potuto vedere questa struttura:
A Array (
...
ab Array (...)
ac Array (
AC Array (
...
ace Array (...)
)
AC Array (
...
ace Array (...)
)
...
)
ad Array (...)
)
Normalmente dopo usando idrato presumo che questo sarebbe il mio oggetto:
A Object {
...
ab Object { ... }
ac Array (
AC Object {
...
ace Object { ... }
}
AC Object {
...
ace Object { ... }
}
...
)
ad Object { ... }
}
Ma invece di questo ho questa struttura:
A Object {
...
ab Array (...)
ac Array (
AC Array (
...
ace Array (...)
)
AC Array (
...
ace Array (...)
)
...
)
ad Array (...)
}
Quindi solo il modello principale è stato convertito in un oggetto. Sai come ottenere che tutti gli array di modelli annidati siano convertiti in oggetti come il risultato presunto?
E no, non è possibile utilizzare HYDRATE_RECORD
durante l'interrogazione del DB.
@ j0k perché non dovrei ringraziare per la risposta? – shadyyx
Politica del sito, nessuna limitazione, grazie, quel genere di cose nella domanda reale - in quanto non fa parte della domanda. Bene nei commenti – Orbling
Vedere [questo thread] (http://meta.stackexchange.com/q/2950/182741). – j0k