Codeigniter 透過其內建函數提供了處理資料庫事務的無縫機制。這允許開發人員將多個資料庫操作作為單一原子工作單元執行。
但是,在 Codeigniter 中使用事務時,開發人員可能會遇到一個常見問題,即外部函數發生錯誤在事務區塊內呼叫不會觸發回滾。
要解決這個問題,重要的是要理解包含資料庫操作的外部函數應該封裝在模型中,而不是控制器。這可確保資料庫互動在交易上下文中執行。
考慮以下程式碼範例:
<code class="php">// Model class YourModel extends CI_Model { public function transactionExample($data, $id) { $this->db->trans_start(); $this->db->insert('table_name', $data); // Updating data $this->db->where('id', $id); $this->db->update('table_name', $test); $this->db->trans_complete(); /*Optional*/ if ($this->db->trans_status() === FALSE) { # Something went wrong. $this->db->trans_rollback(); return FALSE; } else { # Everything is Perfect. # Committing data to the database. $this->db->trans_commit(); return TRUE; } } }</code>
在 Codeigniter 4 中,與事務相關的函數名稱略有更改,如下所示:
Function | Codeigniter 3 | Codeigniter 4 |
---|---|---|
Start Transaction | trans_start() | transBegin() |
Complete Transaction | trans_complete() | transCommit() |
Rollback Transaction | trans_rollback() | transRollback() |
Transaction Status | trans_status() | transStatus() |
以上是為什麼 Codeigniter 事務中外部函數的錯誤不會觸發回滾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!