2011-11-02 94 views
1

我是datamapper的新手。我試圖將結果複製到新的ID時遇到問題。Codeigniter Datamapper保存爲新ID

這是我的數據庫簡化表:

工作表

 
| id | property_id | name | type | 
| 1 | 1   | abc | i | 
| 2 | 2   | def | ii | 

屬性表

 
| id | job_id | size | 
| 1 | 1  | 90 | 
| 2 | 2  | 40 | 


我怎麼能自動根據作業ID 1複製一個新的工作轉換成新工作/財產ID,如

工作表

 
| id | property_id | name | type | 
| 1 | 1   | abc | i | 
| 2 | 2   | def | ii | 
| 3 | 3   | abc | i | 

屬性表

 
| id | job_id | size | 
| 1 | 1  | 90 | 
| 2 | 2  | 40 | 
| 3 | 3  | 90 | 

感謝您的幫助! :)

回答

3

在爲DataMapper的過分熱心版的文檔:http://datamapper.wanwizard.eu/pages/clonecopy.htmlclonecopycopy將清除ID。下面是他們的榜樣,只是跳過的更改部分:

// Let's save a new hosting plan 
$p = new Plan(); 

$p->name = 'The 100GB Plan'; 
$p->storage = 1000; 
$p->bandwidth = 2000; 
$p->databases = 5; 
$p->domains = 5; 
$p->emails = 50; 

$p->save(); 

// Now, lets make a copy of that saved plan and base a new one off of it 
$p = $p->get_copy(); 

// Change only what we need to 
$p->name = 'The Big 150GB Plan'; 
$p->storage = 1500; 
$p->bandwidth = 2500; 

// And now save a new record 
$p->save(); 
+0

謝謝,我會試試 –

+0

感謝您的幫助!現在我只需要弄清楚自己如何複製所有其他表關係與新的ID :) –

1

你也可以修改您檢索對象,然後用save_as_new()將其保存爲一個新的記錄。

+0

如何使用save_as_new()沒有我試圖複製的ID?謝謝。它只是直接使用:$ j = new Job(); $ j-> where('id',1) - > get(); $ J-> save_as_new();非常感謝 –

+0

明白了,我只是清除了id值$ j-> id =''; –

+0

同樣使用1.8.2 - 只需手動清除id並使用save(),save_as_new()似乎什麼也不做。 –