Kohana ORM - 重复的实例/数据库条目

时间:2012-11-25 18:54:28

标签: kohana kohana-3 kohana-orm kohana-db

我想“复制”一个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
    }

我希望我足够清楚......基本上,我怎样才能“再次”保存数据库中的模型......?

2 个答案:

答案 0 :(得分: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个关系。

答案 1 :(得分:-1)

您可能想尝试一下:

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

不要忘记对象克隆:Object Cloning