2011-07-26 28 views
9

Hola, estoy teniendo problemas con lo que pensé que sería una tarea fácil.¿Cómo obtener ID de clave externa de asociación en Doctrine 2 sin cargar el objeto asociado?

Estoy recuperando una publicación de la base de datos. La entidad Post tiene un campo creado Por el cual está asociado a una entidad de Usuario.

Lo que me gustaría hacer es cargar la publicación y el usuario con dos consultas separadas (sin unión). Eso significa que necesito tener acceso al entero de clave externa created_by en el objeto $ post. La doctrina no parece exponer eso en absoluto. Un var_dump de publicación muestra createdBy => null. Si me uno al usuario directamente en la consulta posterior createdBy => User object. ¿No hay forma de obtener el entero de la clave externa created_by de la publicación para poder consultar al usuario?

Gracias

Respuesta

19

utilizar esto en su consulta:

$q->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true); 
$q->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY); 

Hydratation está desactivado, por lo que tiene su resultado como una matriz.

+0

Ah genial. No había sabido acerca de esa pista. Sin embargo, no parece haber un método setHydrate en el objeto de consulta. Sin embargo, puedes hidratarlo como una matriz y funciona (y aún obtienes un resultado muy bien hidratado). $ q-> getResult (\ Doctrine \ ORM \ Query :: HYDRATE_ARRAY); Si actualizas tu respuesta, la aceptaré. ¡Gracias! – Marc

+0

Sí, tienes razón. setHydrate es para MongoDB ODM. – Maxence

+0

De hecho, decidí probar el MongoDB ODM, así que lo tendré en cuenta. ¡Gracias! – Marc

Cuestiones relacionadas