2011-05-14 30 views
5
$posts = $em->find('Application\BlogBundle\Entity\Post',1); 
print_r ($posts); 

¿Por qué lo conseguí?Symfony2, Doctrine 2: Objeto getResult

Barii\BlogBundle\Entity\Post Object ([id:Barii\BlogBundle\Entity\Post:private] => 1 [title:Application\BlogBundle\Entity\Post:private] => something [body:Application\BlogBundle\Entity\Post:private] => content ) 

en lugar de una matriz simple como esto:

array ([id] => 1, 
     [title] => "something",    
     [body] => "content" ) 

lo uso con Symfony 2.

Respuesta

9

Usted tiene un par de opciones aquí. Por lo que yo sé, no se pueden encontrar resultados como matrices de repositorios de entidades de forma predeterminada. En su lugar, puede hacer una de estas dos cosas:

En primer lugar, podría implementar un método toArray() en su objeto entidad (quizás a través de mapped superclass) que simplemente devuelve una matriz de propiedades.

En segundo lugar, se podría utilizar Doctrina lenguaje de consulta para extraer la información que necesita usando el método getArrayResult(), tal vez algo como esto:

$query = $em->createQuery('SELECT p FROM Application\BlogBundle\Entity\Post p WHERE p.id=:pid'); 
$query->setParameter('tid', $postId); 
$result = $query->getArrayResult(); // shortcut for $query->getResult(Query::HYDRATE_ARRAY); 

más en profundidad la documentación sobre DQL se puede encontrar here.

+10

Es decepcionante que Sf2/Doctrine no anticipe este caso de uso extremadamente común. – Acyra