2012-05-08 23 views
1

私は2つのテーブルを持っている:コピーオブジェクト - symfonyの1.4

First: 
id | name | password 
1 | peter | old 

Second: 
id | name | password 

私は最初のテーブルからオブジェクトを取得する:私は両方のケースで

$first = Doctrine::getTable('First')->find(1); 

$copy = $first->copy(); 

$second = new Second($first); 
$second->save(); 

または

$second = new Second($copy); 
$second->save(); 

Second: 
id | name | password 
1 | NULL | NULL 
2 | NULL | NULL 

このコピーを作成できますか?

答えて

3

あなたがtoArray/fromArrayと試みたことがありますか?

$first = Doctrine::getTable('First')->find(1); 

$second = new Second(); 
$second->fromArray($first->toArray()); 
$second->save(); 
1

確かに、このようには思えません。あなたはそれをどこで見ましたか?あるエンティティをパラメータとして別のエンティティに渡すことはできません。

ちょうどすべてのフィールドをコピーするには、手動または使用反射、それを実行します。

$first = Doctrine::getTable('First')->find(1); 

$second = new Second(); 
$second->setValue1($first->getValue1()); 
$second->setValue2($first->getValue2()); 
... 
$second->save(); 
+0

私はこれらの解決策を知っていますが、もっと速くしたいのですが; –

+0

これは最後にやりますが、あなたによってではなく、コードによって行われます。またはコーディングの面でより速いことを意味しますか?だから私は反射を使用すると言っています – Dariop

2

なぜクローンを使用しませんか? toArray、fromArrayを使うよりも面倒です。

$first = Doctrine::getTable('First')->find(1); 
//do whatever to $first here... 

$second = clone $first; 
$second->save(); 

IDフィールドを$ secondに設定する必要があるかもしれません。

+0

これは、 'Second'テーブルにレコードをコピーするのではなく、同じテーブルに新しいレコードを作成するだけでしょうか? –

関連する問題