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

Pourquoi je l'ai eu?Symfony2, Doctrine 2: objet 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 ) 

au lieu d'un simple tableau comme celui-ci:

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

-je utiliser avec Symfony 2.

Répondre

9

Vous avez un couple d'options ici. Pour autant que je sache, vous ne pouvez pas trouver les résultats sous forme de tableaux dans les dépôts d'entités par défaut. Au lieu de cela, vous pouvez effectuer l'une des deux opérations suivantes:

D'abord, vous pouvez implémenter une méthode toArray() sur votre objet entité (peut-être via un mapped superclass) qui renvoie simplement un tableau de propriétés.

Deuxièmement, vous pouvez utiliser Doctrine Query Language pour tirer les informations que vous avez besoin en utilisant la méthode getArrayResult(), peut-être quelque chose comme ceci:

$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); 

Plus sur DQL se trouve here en profondeur la documentation.

+10

Il est décevant que Sf2/Doctrine n'anticipe pas ce cas d'utilisation extrêmement courant. – Acyra

Questions connexes