0

我对以下代码有疑问

/** @Route("/{collection}/{id}", name="object", defaults={"_format" = "json"}) */
public function retrieveOne($collection, $id)
{
    $collection = Inflector::classify($collection);

    $object = $this->get('doctrine_mongodb.odm.document_manager')
        ->getRepository('NameBundle:' . $collection)
        ->find($id);

    $response = new Response(json_encode($object));

    return $response;
}

文档

use Doctrine\ODM\MongoDB\Mapping\Annotations as Mongo;

/**
* Entrada
*
* @Mongo\Document
*/
class Entrada
{
    /**
     * @Mongo\Id
     */
    protected $id;

    /**
     * @Mongo\String
     * @var int $type
     */
    private $type;

    /**
     * @Mongo\String
     * @var string $nombre
     */
    private $nombre;

   //.. setters and getters
}

我总是进入{}响应正文。

注意:查询正确返回一个对象

4

1 回答 1

2

json_encode只会对公共属性进行编码。

所以你可以:

  • 公开您的财产 (baaahhhh)
  • 在您的 Entrada 类上创建一个 toArray() 方法,然后执行json_encode($object->toArray())
  • 使用很棒的JMSSerializerBundle
于 2012-10-02T22:46:28.487 回答