Symfony2,Doctrine 2:getResult Object

时间:2011-05-14 19:32:08

标签: doctrine-orm symfony

$posts = $em->find('Application\BlogBundle\Entity\Post',1);
print_r ($posts);

为什么我得到它?

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中使用它。

1 个答案:

答案 0 :(得分:10)

这里有几个选项。据我所知,默认情况下,您无法从实体存储库中找到结果作为数组。相反,你可以做以下两件事之一:

首先,您可以在实体对象上实现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