


Mengapakah ralat dalam fungsi luaran dalam transaksi Codeigniter tidak mencetuskan pemulangan semula?
Nov 03, 2024 am 04:53 AMTransaksi Codeigniter
Codeigniter menyediakan mekanisme yang lancar untuk mengendalikan transaksi pangkalan data melalui fungsi terbina dalamnya. Ini membolehkan pembangun melaksanakan berbilang operasi pangkalan data sebagai unit kerja atom tunggal.
Penerangan Isu
Walau bagaimanapun, apabila menggunakan transaksi dalam Codeigniter, pembangun mungkin menghadapi isu biasa di mana ralat berlaku dalam fungsi luaran dipanggil dalam blok transaksi jangan mencetuskan pemulangan semula.
Kemasukan Fungsi Luaran
Untuk menangani isu ini, adalah penting untuk memahami bahawa fungsi luaran yang mengandungi operasi pangkalan data harus dirangkumkan dalam model, bukan pengawal. Ini memastikan bahawa interaksi pangkalan data dilaksanakan dalam konteks transaksi.
Sampel Kod dengan Pelaksanaan Berasaskan Model
Pertimbangkan contoh kod berikut:
<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>
Pertimbangan Utama
- Secara lalai, Codeigniter menjalankan semua transaksi dalam mod ketat. Apabila mod ketat didayakan, jika mana-mana kumpulan transaksi gagal, semua kumpulan akan ditarik balik. Jika mod ketat dilumpuhkan, setiap kumpulan dilayan secara berasingan, bermakna kegagalan dalam satu kumpulan tidak akan menjejaskan yang lain.
- Fungsi trans_complete() secara automatik melancarkan urus niaga jika ralat berlaku. Sebagai alternatif, pembangun boleh mengendalikan ralat secara manual menggunakan fungsi trans_rollback() dan trans_status().
Kemas Kini Codeigniter 4
Dalam Codeigniter 4, nama fungsi berkaitan transaksi telah berubah sedikit apabila berikut:
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() |
Atas ialah kandungan terperinci Mengapakah ralat dalam fungsi luaran dalam transaksi Codeigniter tidak mencetuskan pemulangan semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
