¿Qué es la hidratación de Doctrine?

He leído sobre la hidratación en la documentación de la doctrine, pero todavía no puedo entender de qué se trata.

¿Podría alguien explicar por favor?

La hidratación es un método utilizado para devolver los resultados de la consulta. Por ejemplo:

  1. HYDRATE_ARRAY : esto le devolverá una matriz de registros 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']; } 
  2. HYDRATE_RECORD – Esto te 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(); } 
  3. HYDRATE_SINGULAR_SCALARHYDRATE_SINGULAR_SCALAR 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 acerca de cada uno en la documentación.

 $q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY); It will return just a simple array instead of a doctrine collection object.