我正在尝试使用JMSSerizial Bundle序列化嵌入式mongodb文档

Phi*_*lip 7 mongodb symfony jmsserializerbundle

我试图在Symfony 2.1中序列化带有嵌入文档的MongoDB文档.我正在使用JMSserializer和Mongodb-odm包.

我有以下文件实体.

// Blog

namespace App\DocumentBundle\Document;

use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use JMS\SerializerBundle\Annotation\Type;

/**
 * @MongoDB\Document(repositoryClass="App\DocumentBundle\Repository\BlogRepository")
 */
class Blog {

    /**
     * @MongoDB\Id
     */
    protected $id;

    /**
     * @MongoDB\String
     * @Assert\NotBlank()
     */
    protected $title;

    /**
     * @MongoDB\string
     * @Assert\NotBlank()
     */
    protected $blog;

    /**
     * @MongoDB\EmbedMany(targetDocument="Tag")
     */
    private $tags;

    /**
     * @MongoDB\Timestamp
     */
    protected $created;

    /**
     * @MongoDB\Timestamp
     */
    protected $updated;
}
Run Code Online (Sandbox Code Playgroud)

// Tag

namespace App\DocumentBundle\Document;

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

/**
 * @MongoDB\EmbeddedDocument
 */
class Tag {

    /**
     * @MongoDB\String
     */
    protected $name;
}
Run Code Online (Sandbox Code Playgroud)

为标记属性生成ArrayCollection类型,但JMSSerializer包不喜欢它.如果我将标记更改为@MongoDB\String并重新生成Blog文档,则会进行序列化,但不会设置@MongoDB\EmbedMany(targetDocument ="Tag").

我是否需要指定一些JMSSerializer带注释的属性允许嵌入式文档也被序列化?

map*_*phe 1

您必须配置 JMSSerializer 的预期类型

注释:

/**
 * @MongoDB\EmbedMany(targetDocument="Tag")
 * @Type(ArrayCollection<App\DocumentBundle\Document\Tag>)
 */
private $tags;
Run Code Online (Sandbox Code Playgroud)

亚米尔:

tags:
    expose: true
    type: ArrayCollection<App\DocumentBundle\Document\Tag>
Run Code Online (Sandbox Code Playgroud)