He leído sobre la hidratación en la documentación de la doctrina, pero todavía no puedo entender qué es.
¿Podría alguien por favor explicar?
nunca_tuve_un_nombre
He leído sobre la hidratación en la documentación de la doctrina, pero todavía no puedo entender qué es.
¿Podría alguien por favor explicar?
Crozín
La hidratación es un método que se utiliza para devolver resultados de consultas. Por ejemplo:
HYDRATE_ARRAY
– Esto le devolverá una matriz de registros que están representados por otra matriz:
$q = Doctrine_Query::create()
->from('Post p')
->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$resultSet = $q->execute(); // $resultSet is an array
foreach ($resultSet as $post) {
// $post is an array
echo $post['title'];
}
HYDRATE_RECORD
– Esto le devolverá una colección (Doctrine_Collection) de objetos:
$q = Doctrine_Query::create()
->from('Post p')
->setHydrationMode(Doctrine::HYDRATE_RECORD); // Unnecessary, HYDATE_RECORD is default method
$resultSet = $q->execute(); // $resultSet is an Doctrine_Collection object
foreach ($resultSet as $post) {
// $post is an Post object
echo $post->getTitle();
echo $post['title']; // Each Doctrine's Model object implements ArrayAccess interface so this is possible
echo $post->myCustomMethod();
}
HYDRATE_SINGULAR_SCALAR
– Devolverá el valor de la primera columna del resultado de la consulta:
$q = Doctrine_Query::create()
->select('p.created_at')
->from('Post p')
->where('p.id = ?', 321)
->setHydrationMode(Doctrine::HYDRATE_SINGULAR_SCALAR);
$createdAt = $q->execute(); // $createdAt has value of first column from first record from result set (eg.: 2008-04-06 21:22:35)
Hay algunos métodos más, puede leer sobre cada uno en la documentación.
ok… así que normalmente cuando uso sql devuelve un objeto mysql y tengo que usar mysqli_fetch_assoc, luego ordenarlos yo mismo y así sucesivamente… pero ahora todo está ordenado para mí. ¿De eso se trata la hidratación, de darme objetos ordenados/matrices?
– never_had_a_name
18 de abril de 2010 a las 10:49
No, no se trata de ordenar el resultado (orderBy()
maneja esto). Se trata ¿Cuál será el resultado de su consulta?si será un único valor escalar (HYDRATE_SINGULAR_SCALAR
), una matriz o matrices donde las matrices anidadas representan cada registro de la base de datos (HYDRATE_ARRAY
) o una colección de objetos (HYDRATE_RECORD
). Hacer var_dump en el resultado de la consulta para cada modo de hidratación: esa es la mejor manera de ver “¿cómo funciona?”
– Crozín
18 de abril de 2010 a las 11:24
solo un pequeño consejo. En 1.2 HYDRATE_SINGULAR_SCALAR
devuelve un error constante indefinido. HYDRATE_SINGLE_SCALAR
es correcto.
– Darmen Amanbay
1 de noviembre de 2011 a las 10:33
como nota Doctrine::HYDRATE_RECORD
ahora se conoce como Doctrine::HYDRATE_OBJECT
–Steve Tauber
3 de marzo de 2014 a las 13:55
Un enlace a la documentación antes mencionada haría que esta respuesta fuera más útil.
– Sean el Frijol
18/09/2015 a las 20:32
Jubayer Arefin
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
Devolverá solo una matriz simple en lugar de un objeto de colección de doctrina.
Referencia de la documentación de Doctrine2 que explica la HIDRATACIÓN: doctrina-proyecto.org/docs/orm/2.0/en/reference/…
– David Ohia
5 de septiembre de 2011 a las 13:08
¿No es constructivo? Este es uno de los conceptos más fundamentales para entender cómo funciona el funcionamiento interno de Doctrine.
– csvan
7 de julio de 2014 a las 9:06
Creo que esta pregunta debería protegerse en lugar de cerrarse.
– Simón
30 de enero de 2015 a las 16:17
@Simón De acuerdo. Tanto la pregunta como la respuesta aceptada son populares, ¿por qué no moverla a protegido estado entonces?
– Denis Kulaguin
5 de julio de 2016 a las 8:43