Doctrine ODM 1.0beta3では、Documentから@EmbeddedDocumentを取り出し、別のDocumentに配置する必要があります。Doctrineでの埋め込みドキュメントの作成方法(MongoDbを使用)
しかし、私がこれをしようとすると、私は奇妙な結果を得ます。
EmbeddedObjectを複製する方法がありますか?
EDIT:
「奇妙な」結果は、この埋め込まれた文書のプロパティは他の埋め込まれた文書と一緒に挿入されていることです。
詳細:
私は@EmbedMany
関係のいくつかのJob
文書でQueue
埋め込まれた文書を持っている:
Queue: -> [ Job, Job, Job]
また、いくつかのJob
sが$callback
と呼ばれる@EmbedOne
プロパティに別のJob
を持っています:
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...
}
私がしようとしているのは、$コールバックジョブを取得し、$ resultハッシュに値を追加し、このジョブを$ jobs配列()にエンキューすることです。
私が得るのは、ジョブがエンキューされるだけですが、$ jobs配列の$結果ハッシュも、あたかも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);
奇妙な結果は何ですか? –