1

私は2つのテーブルを持っています:

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

このコピーを作成することは可能ですか?

4

3 に答える 3

3

toArray/で試しましたfromArrayか?

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

$second = new Second();
$second->fromArray($first->toArray());
$second->save();
于 2012-05-08T15:04:57.720 に答える
2

なぜクローンを使わないのですか?toArray、fromArray を使用するよりも面倒ではありません。

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

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

ただし、$second の ID フィールドを null に設定する必要がある場合があります。

于 2012-05-09T15:37:38.820 に答える
1

もちろんですが、私はこのようには思いません。どこで見ましたか?あるエンティティをパラメータとして別のコンストラクタに渡すことはできないと思います。

手動で行うか、リフレクションを使用してすべてのフィールドをコピーします。

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

$second = new Second();
$second->setValue1($first->getValue1());
$second->setValue2($first->getValue2());
...
$second->save();
于 2012-05-08T14:13:04.597 に答える