gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:30:36 29 4
gpt4 key购买 nike

我正在尝试用 Symfony 2.1 中的嵌入式文档序列化 MongoDB 文档。我正在使用 JMSserializer 和 Mongodb-odm 包。

我有以下 Documents 实体。

// 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;
}

// Tag

namespace App\DocumentBundle\Document;

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

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

/**
* @MongoDB\String
*/
protected $name;
}

为 tag 属性生成了一个 ArrayCollection 类型,但 JMSSerializer 包不喜欢它。如果我将标签更改为 @MongoDB\String 并重新生成博客文档,然后发生序列化,但不设置 @MongoDB\EmbedMany(targetDocument="Tag")。

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

最佳答案

您必须为 JMSSerializer 配置预期的类型

注释:

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

Yaml:

tags:
expose: true
type: ArrayCollection<App\DocumentBundle\Document\Tag>

关于mongodb - 我正在尝试使用 JMSSerizial Bundle 序列化嵌入式 mongodb 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com