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带注释的属性允许嵌入式文档也被序列化?
您必须配置 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)
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |