我想“复制”一个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
}
我希望我足够清楚......基本上,我怎样才能“再次”保存数据库中的模型......?
答案 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)