2011-12-29 28 views
0

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); 
+0

奇妙な結果は何ですか? –

答えて

0

私はあなたが他の言語と同じように、あなたがこの問題に取り組むだろうと思います。

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

私の理解では、PHPではなく、参照のオブジェクトのコピーを作成し、私はそれをローカルに確認されたことである:

ちょうどオブジェクトをコピーします。

正確にはどのような結果が得られますか?あなたが何かもっと情報を提供すれば、私は助けてくれるかもしれません。

乾杯!

関連する問題