我通常会将新数据保存到数据库中,如下所示:
$this->MyTable->set(array(
'id' => $id,
'code' => $temp_code,
'status' => $status,
'age' => $age,
'location' => $location,
'money' => $money
));
$this->MyTable->save();
如果数据库中已存在该ID,我会更新其相应的字段,如下所示:
$this->Adtweet->id = $id;
$this->Adtweet->saveField('code', $temp_code);
$this->Adtweet->saveField('status', $status);
有没有更好或“正确”的方法来做到这一点?
当我尝试输入已存在的ID并使用set
函数时,出现以下SQL完整性错误:
(错误:SQLSTATE [23000]:完整性约束违规:1062重复条目'150245925'用于密钥'PRIMARY')
如何编写一个干净地处理重复条目但不返回错误的函数?
答案 0 :(得分:19)
如果您想保存新数据,只需使用Model::save()
:
$data = array(
'ModelName' => array(
'foo' => $foo
)
)
// prepare the model for adding a new entry
$this->ModelName->create();
// save the data
$this->ModelName->save($data);
如果您想更新数据,请使用相同的方法,而无需调用Model::create()
$data = array(
'ModelName' => array(
'id' => $id
'foo' => $foo
)
)
$this->ModelName->save($data);
修改强>
我想这就是你要找的东西:
$this->ModelName->id = $id;
if (!$this->ModelName->exists()) {
$this->ModelName->create();
}
$this->ModelName->save($data);
答案 1 :(得分:0)
发布数据示例
nil
尝试添加
Array
(
[ModelName] => Array
(
[column1] => value
[column2] => value
[column3] => value
)
)
尝试此编辑
if ($this->request->is('post')) {
$this->ModelName->create();
$this->ModelName->save($this->request->data);
}