1

我正在尝试开发一个 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 -> Doctrine\MongoDB\Connection -> 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 扩展来解决它,更改了一些配置,但没有任何改变。

有谁知道会发生什么?

4

1 回答 1

2

如果您想获取 RadmasOpen010Bundle:Service 文档的集合,则必须在从存储库调用 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) 以正确序列化排除策略

于 2013-10-16T14:28:17.523 回答