在Doctrine ODM 1.0beta3中,我需要從Document中獲取@EmbeddedDocument,並將其放入另一個Document中。如何在Doctrine中複製和嵌入文檔(使用MongoDb)
但是,當我嘗試這樣做時,我得到了奇怪的結果。
有一種方法可以複製和嵌入式對象?
編輯:
的「奇怪」的結果是,該嵌入文檔的屬性插入旁邊的其他嵌入文檔。
更多細節:
我有一個@EmbedMany
關係與幾個Job
文檔Queue
嵌入文檔:
Queue: -> [ Job, Job, Job]
還有些Job
■找另一Job
在@EmbedOne
屬性調用$callback
:
class Job {
/** @EmbedOne(targetDocument="Cron\Model\Document\Job") */
private $callback;
/** @Hash */
private $result;
}
/*
* @EmbeddedDocument
*/
class Queue {
/** @EmbedMany(targetDocument="Cron\Model\Document\Job") */
private $jobs = array();
//Getters and setters...
}
我想要做的是獲取$回調作業,向$ result哈希中添加一個值,並將該作業排入$ jobs數組()中。
我得到的是作業排入隊列,還有$ jobs數組中的$ result散列,就好像它是一個Job文檔。
工作從MongoDB的數組:
...
[2] => Array
(
[parameters] => Array
(
[field] => office
[result] => "foo"
)
)
[3] => Array
(
[_id] => 638
[parameters] => Array
(
[field] => office
[result] => "foo"
)
)
的代碼是這樣的:
$job = $queue->getLastJob();
$callback = $job->getCallback();
$params = $callback->getParameters();
$params['result'] = 'foo';
$callback->setParameters($params);
$queue->addJobs($callback);
什麼是奇怪的結果? – 2012-01-03 19:08:24