這可能是/ true?CodeIgniter update()默認爲insert()
舉例來說,如果我想用1 id來更新行,但沒有行存在,將這一功能(更新功能)會自動插入新行與給定的數據?有沒有一個參數來啓用它?
如果不是這樣,如果不使用單獨的函數來評估表並返回布爾值(如果該行存在),那麼處理此問題的最佳方法是什麼(如果可能)。 (然後更新或從那裏插入)
沒有太多的問題..只是尋求澄清,並想知道如果有人知道這一點。
這可能是/ true?CodeIgniter update()默認爲insert()
舉例來說,如果我想用1 id來更新行,但沒有行存在,將這一功能(更新功能)會自動插入新行與給定的數據?有沒有一個參數來啓用它?
如果不是這樣,如果不使用單獨的函數來評估表並返回布爾值(如果該行存在),那麼處理此問題的最佳方法是什麼(如果可能)。 (然後更新或從那裏插入)
沒有太多的問題..只是尋求澄清,並想知道如果有人知道這一點。
也許你正在尋找的是這個INSERT ... ON DUPLICATE KEY UPDATE
- 只要你使用的是MySQL,並且你的id
是表格上的唯一鍵。
您必須手動構建查詢並傳遞給$this->db->query()
函數,而不是像DB驅動程序的輔助函數那樣內置任何內置活動記錄。
我不知道你爲什麼會用這個,但處理這個(有一個功能,你的要求)的一種方法如下:
function update_or_insert($data){
if(!array_key_exists('id',$data))
return $this->db->insert($data);
$row = $this->db->get_where('mytable',['id' => $data['id']])->row();
if(!$row) return false;
$this->db->where($row->id);
return $this->db->update('my_table',$data);
}
$的數據可以是一個完整$ _ POST陣列從傳遞控制器。我會把這個函數放在代表表格的模型中(my_table)。
這是應該工作的一種解決方案。讓我們知道。
我找到了一個很好的解決這個link,我希望它能幫助,如果有人還在尋找笨在的解決方案:
$sql = 'INSERT INTO menu_sub (id, name, desc, misc)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
name=VALUES(name),
desc=VALUES(desc),
misc=VALUES(misc)';
$query = $this->db->query($sql, array($id,
$this->validation->name,
$this->validation->desc,
$this->validation->misc
));