1

在按照官方教程设置 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 中检索仅包含我的类数据的数组?提前致谢

4

0 回答 0