我常新的数据保存到这样的数据库:
$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')
我怎么可以编写干净处理重复条目,而不返回错误的功能?
如果您想保存新的数据,只需要使用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);
参见: http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-save-array-data-null-boolean-validate-true-array-fieldlist-array
编辑:
我想这就是你要找的内容:
$this->ModelName->id = $id;
if (!$this->ModelName->exists()) {
$this->ModelName->create();
}
$this->ModelName->save($data);
发布数据的例子
Array
(
[ModelName] => Array
(
[column1] => value
[column2] => value
[column3] => value
)
)
试试这个加
if ($this->request->is('post')) {
$this->ModelName->create();
$this->ModelName->save($this->request->data);
}
试试这个编辑
if ($this->request->is('post')) {
$this->ModelName->id = 2;
$this->ModelName->save($this->request->data);
}