在 Doctrine ODM 1.0beta3 中,我需要从一个文档中获取一个 @EmbeddedDocument,并将其放入另一个文档中。
但是,当我尝试这样做时,会得到奇怪的结果。
有没有办法复制和EmbeddedObject?
编辑:
“奇怪”的结果是这个嵌入文档的属性被插入到其他嵌入文档旁边。
更多细节:
我有一个Queue
嵌入文档,其中包含多个Job
文档@EmbedMany
:
Queue: -> [ Job, Job, Job]
还有一些Job
sJob
在一个@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...
}
我要做的是获取 $callback 作业,将值添加到 $result 哈希并将此作业排入 $jobs 数组()中。
我得到的是排队的作业,还有 $jobs 数组中的 $result 哈希,就好像它是一个作业文档一样。
来自 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);