Doctrine MongoDB ODM不会改变被引用对象的状态



我正在将Symfony2与DoctrineMongoDB捆绑包一起使用。我做了一个服务,接收JSON格式的信息(对象)。

我发送的对象有一个属性,用于引用数据库中不同集合中的另一个对象。

更改参考有效。但如果我发送另一个字段,比如ObjectB中的"title",它会将title设置为数据库中的新值。我该如何防止这种情况发生?

我只想设置新的引用,而不是对那个Object进行任何操作。

这是一些代码(简称)

class Fun{    
   /**
     * @MongoDBId(strategy="auto")
     */
    private $id;
   /** @MongoDBEmbedMany(targetDocument="JokeEmbedded", strategy="set")
    */
   private $jokes = array();
}

class JokeEmbedded
{
    /**
     * @MongoDBReferenceOne(targetDocument="JokePattern", cascade={"persist"})
     */
    private $ref;
    /**
     * @MongoDBString
     */
    private $title;
}
class JokePattern
{
    /**
     * @MongoDBId(strategy="AUTO")
     */
    private $id;
    /**
     * @MongoDBString
     */
    private $title;
}

我现在向服务发送以下JSON:(JSON表示ObjetClass Fun)

[{"id":"1","jokes":[{"ref":{"id":"222", "title":"new title"}]]

我现在的问题是,我如何忽略我想要设置的引用的新给定的"标题"?我希望将DB中的新引用设置为ID 222。没什么了。

任何帮助都将是伟大的!非常感谢。

编辑:

这是处理JSON输入的代码

$request = $this->getRequest();
//Get JSON-Data
$data = $request->getContent();
$funs = $this->get('serializer')->deserialize(
    $data,
    'ArrayCollection<AcmeFunBundleDocumentFun>',
    'json'
);
//create documentmanager
$dm = $this->get('doctrine_mongodb')->getManager();
foreach ($funs as $obj) {
        //save to db
        $dm->persist($obj);
    }
$dm->flush();

我使用JMS SerializerBundle中的反序列化上下文和列表注释来管理它。

问候语:)

相关内容

  • 没有找到相关文章

最新更新