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

爲什麼我得到它?Symfony2,Doctrine 2:getResult Object

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 ) 

,而不是一個簡單的數組是這樣的:

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

我用它來與Symfony的2

回答

9

你這裏有幾個選項。據我所知,默認情況下,您無法從實體存儲庫中找到數組的結果。相反,您可以執行以下兩項操作之一:

首先,您可以在實體對象上實現一個toArray()方法(可能通過mapped superclass),該方法只返回一組屬性。

其次,你可以使用Doctrine查詢語言來拉你需要使用getArrayResult()方法的信息,或許是這樣的:

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

更深入的DQL文件可以發現here

+10

令人失望的是,Sf2/Doctrine沒有預料到這種非常常見的用例。 – Acyra 2011-11-27 20:28:24