Symfony2,Doctrine 2:getResult Object

bar*_*rii 6 symfony doctrine-orm

$posts = $em->find('Application\BlogBundle\Entity\Post',1);
print_r ($posts);
Run Code Online (Sandbox Code Playgroud)

我为什么得到它?

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  )
Run Code Online (Sandbox Code Playgroud)

而不是像这样的简单数组:

array ( [id] => 1,
        [title] => "something",            
        [body] => "content"  )
Run Code Online (Sandbox Code Playgroud)

我在Symfony 2中使用它.

Pro*_*tic 10

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

首先,您可以toArray()在实体对象上实现一个方法(可能通过映射的超类),它只返回一个属性数组.

其次,您可以使用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);
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关DQL的更多深入文档.

  • 令人失望的是,Sf2/Doctrine并没有预料到这种极为常见的用例. (11认同)