フォームの特定のエントリを複製しようとしています。フォーム ID ですべての列の値を取得し、saveAll を使用して新しい行として保存しようとしています。ただし、新しい行を作成する代わりに、既存のエントリを更新しています。
これが私のコードです:
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;
}
フォーム名が同じなので、更新されているのではないかと思いました。そこで、フォームの名前に「copy」文字列を追加しました。それでも、古いエントリは更新されているだけです。
これらは私のテーブル「フォーム」の列とそのタイプです:
Field Type
id int(11)
name varchar(25)
created_by int(11)
access varchar(10)
created timestamp
modified timestamp
status varchar(15)
id フィールドは自動インクリメントなので、save メソッドを指定すると、id が独自に生成されると思いました。