В Doctrine ODM 1.0beta3 мне нужно взять @EmbeddedDocument из документа и поместить его в другой документ.
Однако, когда я пытаюсь это сделать, я получаю странные результаты.
Есть способ дублировать и EmbeddedObject?
EDIT:
«Странный» результат - свойство этого внедренного документа вставляется вместе с другими внедренными документами.
Подробнее:
У меня есть 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);