1
我試圖複製表單中的特定條目。我通過表單ID獲取所有列值,並嘗試使用saveAll將其另存爲新行。但不是創建一個新行,而是更新現有條目。CakePHP saveAll-在mysql中更新行而不是保存爲新行
這裏是我的代碼:
function duplicateForm($data)
{
$this->data['Form']['id']=$data['Form']['id'];
$existingForm=$this->find('all',array('conditions'=>array('Form.id'=>$this->data['Form']['id'])));
foreach($existingForm as $ex):
$this->data['Form']['name']=$ex['Form']['name']." (copy)";
$this->data['Form']['created_by']=$ex['Form']['created_by'];
$this->data['Form']['access']=$ex['Form']['access'];
$this->data['Form']['status']='Incompleted';
if($this->saveAll($this->data))
{echo "Success";}
endforeach;
}
我想也許因爲形式的名稱是一樣的,它得到更新。所以我將「複製」字符串添加到表單的名稱中。然而,舊的條目只是更新。
這是我的表「形式」和它們的類型的列:
Field Type
id int(11)
name varchar(25)
created_by int(11)
access varchar(10)
created timestamp
modified timestamp
status varchar(15)
id字段是自動遞增,所以我想如果我給一個保存方法,該ID將產生它自己的。
是的,它的工作原理..感謝您的幫助和建議..我會避免複製一個一個數組的內容,並通過這種方法.. – Angeline 2009-09-08 06:02:46
但這種方法的工作,如果我有很多記錄相同ID(不是主要的ID)??如果有很多記錄,我必須去使用每個循環的權利? – Angeline 2009-09-08 06:56:50
當然,如果您使用的不是主ID,您可能會獲得許多記錄。在這種情況下請注意調用'$ this-> create()'或使用'saveAll()'。 http://book.cakephp.org/view/75/Saving-Your-Data – deceze 2009-09-08 08:10:52