[英]How do I properly save data to the database?
我通常將新數據保存到數據庫,如下所示:
$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')
如何編寫一個干凈地處理重復條目而不返回錯誤的函數?
如果要保存新數據,只需使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.