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

Dlaczego go mam?Symfony2, Doctrine 2: getResult Obiekt

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 ) 

zamiast zwykłej tablicy tak:

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

Używam go z Symfony 2.

Odpowiedz

9

Masz kilka opcji tutaj. O ile mi wiadomo, nie można domyślnie znaleźć wyników jako tablic z repozytoriów jednostek. Zamiast tego możesz zrobić jedną z dwóch rzeczy:

Po pierwsze, możesz zaimplementować metodę toArray() na obiekcie encji (prawdopodobnie poprzez mapped superclass), która po prostu zwraca tablicę właściwości.

Po drugie, można użyć Doctrine Query Language wyciągnąć informacje potrzebne przy użyciu metody getArrayResult(), być może coś takiego:

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

Bardziej dogłębna dokumentacja DQL można znaleźć here.

+10

To rozczarowujące, że Sf2/Doctrine nie przewiduje tego niezwykle powszechnego przypadku użycia. – Acyra

Powiązane problemy