В Doctrine ODM 1.0beta3 мне нужно взять @EmbeddedDocument из документа и поместить его в другой документ.
Однако, когда я пытаюсь это сделать, я получаю странные результаты.
Есть способ дублировать и EmbeddedObject?
РЕДАКТИРОВАТЬ:
«Странный» результат заключается в том, что свойство этого встроенного документа вставляется вместе с другими встроенными документами.
Подробнее:
У меня есть встроенный документ Queue
с несколькими документами Job
в отношении @EmbedMany
:
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...
}
Что я пытаюсь сделать, так это получить задание $callback, добавить значение в хэш $result и поставить это задание в очередь в массиве $jobs().
Я получаю задание, поставленное в очередь, а также хэш $result в массиве $jobs, как если бы это был документ задания.
массив заданий из 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);