我正在尝试开发一个API(基于DoctrineMongoDBBundle和FOSRestBundle),它存储MongoDB中的所有空洞数据,恢复它,并使用FOSRest显示它。
当我尝试显示存储在数据库中的对象列表时,这就是我得到的:
“message”:“序列化数据不支持资源。路径: Monolog \ Handler \ StreamHandler - > Symfony \ Bridge \ Monolog \ Logger - > Doctrine \ Bundle \ MongoDBBundle \ Logger \ Logger - > Doctrine \ Bundle \ MongoDBBundle \ Logger \ AggregateLogger - > Doctrine \ ODM \ MongoDB \ Configuration - >学说\ MongoDB的\连接 - > Doctrine \ ODM \ MongoDB \ LoggableCursor“,”class“:”JMS \ Serializer \ Exception \ RuntimeException“,
我对FOS的config.yml是这样的:
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: force
这是我的控制者:
/**
* @Route("/services.{_format}", defaults={"_format" = "json"})
* @REST\View()
*/
public function getServicesAction($_format){
$services = $this->get('doctrine_mongodb')->getManager()
->getRepository('RadmasOpen010Bundle:Service')
->findAll();
return $services;
}
我尝试返回格式良好的数组,并且没有显示错误,以及是否将所有服务对象加入数组。
我试图解决它用PECL安装Mongo PHP扩展,改变一些配置,但没有任何改变。
任何人都知道会发生什么事?
答案 0 :(得分:2)
如果你想获得RadmasOpen010Bundle:服务文档的集合,你必须在从存储库调用find方法或从查询构建器调用getQuery方法之后调用方法“toArray”
/**
* @Route("/services.{_format}", defaults={"_format" = "json"})
* @REST\View()
*/
public function getServicesAction($_format){
$services = $this->get('doctrine_mongodb')->getManager()
->getRepository('RadmasOpen010Bundle:Service')
->findAll()->toArray();
return $services;
}
您也可以调用array_values($ services)来正确序列化排除策略