从Symfony CMF中返回的PHPCR集合中检索节点类数据

时间:2016-01-22 13:03:00

标签: php symfony doctrine-orm doctrine doctrine-phpcr

在遵循官方教程设置PHPCR以用作symfony CMF的节点管理器时,它建议以下列方式获取类似类型的所有节点类:

$dm = $this->get('doctrine_phpcr')->getManager();
$posts = $dm->getRepository('AcmeBasicCmsBundle:Post')->findAll();

这给了我一个ArrayCollection对象,然后我可以传递给一个twig模板并迭代以获得诸如post.title和post.content之类的值。 但是,我希望能够序列化此对象以通过API进行传输。显然,这个返回的对象包含许多与节点管理器和相关路由等相关的无关信息,并且序列化它会提供大量不可靠的数组,从中可能无法提取实际的类数据。

使用对象的官方文档(http://doctrine-orm.readthedocs.org/projects/doctrine-phpcr-odm/en/latest/reference/working-with-objects.html)显示了如何检索,修改和保存它们到数据库,这使您可以在类上调用getter / setter函数。我可以使用这些方法从这个集合中构建新对象,但是从数据库中提取一个对象数组只是循环遍历它们并在序列化之前从方法中重新创建它们似乎很荒谬。

$dm = $this->get('doctrine_phpcr')->getManager();
$posts = $dm->getRepository('FrontendCmsBundle:Post')->findAll();

$apiPosts = array();
foreach ($posts as $post) {
    $apiPosts[] = array (
       'title' => $post->getTitle(),
       'content' => $post->getContent(),
    );
}

return $api->serialize($apiPosts, 'json');

我已经浏览了这个对象的官方参考资料并尝试使用所有提到的函数,似乎没有任何函数可用 - http://www.doctrine-project.org/api/common/2.1/class-Doctrine.Common.Collections.ArrayCollection.html

任何人都可以帮我从phpcr中检索一个只有我的类数据的数组吗? 提前致谢

0 个答案:

没有答案