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