簡體   English   中英

如何正確地將數據保存到數據庫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM