Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/05/2011, 08:09
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Retornar valores.. Objeto o Array?

A ver, estas confundido, Hydrate es el proceso de transformar una instancia de Doctrine_Query en un set de datos, ya sea un grafo de objetos o un array que represente el grafo.

Hay varios tipos de data hydrators, los mas utilizados son:
  1. HYDRATE_OBJECT
  2. HYDRATE_ARRAY
  3. HYDRATE_SCALAR
  4. HYDRATE_SINGLE_SCLALAR

El tipo por defecto es HYDRATE_OBJECT, este carga los datos con modelos/clases existentes, con el costo que esto tiene, hay que instanciar y setear datos, es por esto la recomendación de utilizar HYDRATE_ARRAY cuando no haya lógica alguna, por ejemplo, si estas trabajando con ordenes y productos, lo mas probable es que quieras aplicar algún descuento por cantidad, calcular el envio, etc..., en este caso tiene sentido HYDRATE_OBJECT, ahora si voy a mostrar las últimas 10 noticias del blog, para que quiero objetos ?, si no voy a hacer calculo alguno, es mejor opción HYDRATE_ARRAY.

Lo que debe quedar claro es que siempre se hace el hydrate lo que cambia es el tipo de hydrator y este se puede especificar en el DQL, un ejemplo(con D2):

Código PHP:
Ver original
  1. //as Object
  2. $query = $em->createQuery('SELECT u FROM User u');
  3. $users = $query->getResult(Query::HYDRATE_OBJECT);
  4.  
  5. //as Array
  6. $query = $em->createQuery('SELECT u FROM User u');
  7. $users = $query->getResult(Query::HYDRATE_ARRAY);
  8.  
  9. //or shortcut
  10. $users = $query->getArrayResult();
Talves en base a esto puedas re formular alguna de tus preguntas.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)