【发布时间】:2011-12-29 16:32:30
【问题描述】:
在 Doctrine ODM 1.0beta3 中,我需要从一个 Document 中获取一个 @EmbeddedDocument,并将其放入另一个 Document。
但是当我尝试这样做时,我得到了奇怪的结果。
有没有办法复制和EmbeddedObject?
编辑:
“奇怪”的结果是这个嵌入文档的一个属性被插入到其他嵌入文档旁边。
更多细节:
我有一个 Queue 嵌入文档,其中有几个 Job 文档在 @EmbedMany 关系中:
Queue: -> [ Job, Job, Job]
还有一些Jobs 在名为@EmbedOne 的@EmbedOne 属性中还有另一个Job $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 array() 中。
我得到的是入队的 Job,还有 $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);
【问题讨论】:
-
什么奇怪的结果?
标签: mongodb doctrine mongodb-php