2012-11-08 5 views
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アノテーション付き属性の一部を指定する必要がありますか?

+0

あなたのコードは罰金だが。バンドルの最新バージョンを使用していますか?また、JMSSerializerがそれを好まないということは何を意味しますか?スローされたエラーメッセージは何ですか? – kratos

+1

タグ名を何も格納していないのであれば、 '' @MongoDB \ Collection''で '' $ tags''に注釈を付けるのはなぜですか?あなたは '' tags:['tag1'、 'tag2'、 'tag3'、 'etc']で終わるでしょう。 –

+0

アノテーションをつけて 'ArrayCollection'に型を指定しようとします。http://jmsyst.com/libs/シリアライザ/マスタ/リファレンス/アノテーション#タイプ –

答えて

0

あなたはJMSSerializer

注釈の予想されるタイプを設定する必要があります。

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

YAML:

tags: 
    expose: true 
    type: ArrayCollection<App\DocumentBundle\Document\Tag> 
関連する問題