0

ORMオブジェクトを「複製」してから(新しい主キーを使用して)データベースに保存したいのですが、コピーしたオブジェクトの主キーの設定を解除できません。

    $orm1 = new Model1($id);
    if($orm1->loaded()) {
     $orm2 = $orm1;
     $orm2->id = null; //something like this?
     unset($orm2->_primary_key); //or like this?
     $orm2->save(); //I would like to create a new entry in the db but it doesn't work
    }

十分に明確になっているといいのですが...基本的に、データベースにモデルを「再度保存」するにはどうすればよいですか...?

4

2 に答える 2

4

あるモデルから別のモデルにORMデータをコピーする必要があります。

// save current data
$data = $orm1->as_array();
$orm2 = new Model1();
$orm2->values($data);
$orm2->save();

この例では、個別のORMオブジェクトを使用しています。値をにロードして戻すことができますが、前$orm1に呼び出すことを忘れないでください。これにより、モデルがアンロード状態にリセットされます。$orm1->clear()$orm1->values($data)

関係as_arrayも返されることに注意してください。belongs_to

于 2012-11-26T10:42:55.487 に答える
-1

あなたはこれを試してみたいかもしれません:

// Reset primary key
$this->_primary_key_value = NULL;

そして、オブジェクトのクローン作成を忘れないでください:オブジェクトのクローン作成

于 2012-11-26T03:56:42.263 に答える