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 explicarme?
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 explicarme?
Respuestas:
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.
orderBy()
manejar esto). Se trata de cuál será el resultado de su consulta , si será un solo 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
). ¿ Var_dump en el resultado de la consulta para cada modo de hidratación? Esa es la mejor manera de ver "¿cómo funciona?"
HYDRATE_SINGULAR_SCALAR
devuelve un error constante indefinido. HYDRATE_SINGLE_SCALAR
es correcto.
Doctrine::HYDRATE_RECORD
ahora se conoce comoDoctrine::HYDRATE_OBJECT
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
Devolverá solo una matriz simple en lugar de un objeto de colección de doctrina.