6
私はSymfony 2.1内の埋め込みドキュメントを使ってMongoDBドキュメントをシリアライズしようとしています。私はJMSserializerとMongodb-odmバンドルを使用しています。私はJMSSerizialバンドルで埋め込まれたmongodbドキュメントをシリアル化しようとしています
私は以下のドキュメントエンティティを持っています。
// 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;
}
ArrayCollectionのタイプは、タグ属性のために生成されますが、JMSSerializerバンドルはそれが好きではありません。タグを@MongoDB \ Stringに変更してブログ文書を再生成すると、 が直列化されますが、@MongoDB \ EmbedMany(targetDocument = "Tag")は設定されません。
埋め込みドキュメントのシリアル化を許可するJMSSerializerアノテーション付き属性の一部を指定する必要がありますか?
あなたのコードは罰金だが。バンドルの最新バージョンを使用していますか?また、JMSSerializerがそれを好まないということは何を意味しますか?スローされたエラーメッセージは何ですか? – kratos
タグ名を何も格納していないのであれば、 '' @MongoDB \ Collection''で '' $ tags''に注釈を付けるのはなぜですか?あなたは '' tags:['tag1'、 'tag2'、 'tag3'、 'etc']で終わるでしょう。 –
アノテーションをつけて 'ArrayCollection'に型を指定しようとします。http://jmsyst.com/libs/シリアライザ/マスタ/リファレンス/アノテーション#タイプ –