我通常像这样将新数据保存到数据库中:
$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 完整性错误:
(Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '150245925' for key 'PRIMARY')
我如何编写一个函数来干净地处理重复条目而不返回错误?
最佳答案
如果你想保存新数据,只需使用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);
关于php - 如何正确地将数据保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127210/