Doctrine ODM 1.0beta3では、ドキュメントから@EmbeddedDocumentを取得し、それを別のドキュメントに配置する必要があります。
しかし、これを行おうとすると、奇妙な結果が得られます。
EmbeddedObjectを複製する方法はありますか?
編集:
「奇妙な」結果は、この埋め込みドキュメントのプロパティが他の埋め込みドキュメントと一緒に挿入されることです。
詳細:
関係にあるいくつかのドキュメントを含むQueue
埋め込みドキュメントがあります。Job
@EmbedMany
Queue: -> [ Job, Job, Job]
また、いくつかのsは、:と呼ばれるプロパティ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 array()にエンキューすることです。
私が取得するのは、キューに入れられたジョブですが、ジョブドキュメントであるかのように、$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);