0

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);
4

1 に答える 1

0

他の言語と同じように、この問題に取り組むと思います。

オブジェクトをコピーするだけです:

$some_obj["embedded_document"] = $other_obj["embedded_document"];

私の理解では、php は参照ではなくオブジェクトのコピーを作成し、ローカルで確認しました。

正確にはどのような奇妙な結果が得られますか? もう少し情報を提供していただければ、私がお手伝いできます。

乾杯!

于 2012-01-03T19:49:59.937 に答える