database transaction CodeIgntier 4
database transaction CodeIgntier 4

Cara menggunakan database transaction di CodeIgniter 4

Posted on

Transaction didalam Codeigniter adalah fungsi database yang bisa kita manfaatkan dalam melakukan query yang banyak dan saling bergantungan satu dengan yang lainnya.

Misalnya, dalam satu function didalam model kita memperbarui KRS mahasiswa, data tersebut tersimpan berkali-kali dan kita tidak ingin proses penyimpanan tersebut gagal dan rusak ditengah jalan. Dalam kasus-kasus semacam ini Transaction sangat membantu kita.

Dengan menggunakan transaction, dari sekian banyak proses dimulai dari kita mendefinisikan sampai dengan akhir akan di bundle dulu sebelum di commit, atau disimpan permanent. Jika ada kesalahan ditengah jalan kita bisa memilih untuk melakukan rollback dan membatalkan semua proses yang belum berjalan sehingga tidak akan menyebabkan rusaknya data.

Menjalankan transaction di CodeIgniter 4

Sebenernya transaction sudah ada pada versi sebelumnya, hanya saja disini lebih menarik, kita bisa menjalankan commit dan rollback otomatis, sehingga hanya perlu dua line code untuk membuat transaction.

$this->db->transStart();
//query query kamu<br>
$this->db->transComplete();

Pada transComplete, akan sekaligus mengecek apakah akan di commit atau di rollback. Kamu bisa mengeceknya dengan transStatus.

if ($this->db->transStatus() === false) {
    // generate an error... or use the log_message() function to log your error
}

Dengan begitu, kita bisa memberikan return atau aksi jika sukses atau tidak. Misalnya jika false berarti kita minta user untuk mengulangi dan memastikan semua inputan sudah sesuai atau lain sebagainya.

Menjalankan transaction secara manual di CodeIgniter 4

Cara ini ada juga di CI 3, kita bisa memilih melakukan commit dan rollback query secara mandiri dengan kode berikut:

$this->db->transBegin();

$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');

if ($this->db->transStatus() === false) {
    $this->db->transRollback();
} else {
    $this->db->transCommit();
}

Terlihat perbedaanya ketika melakukan transaction manual dan otomatis yaitu antara transStart dan transBegin. Kita harus memperhatikan ini dan jangan sampai tertukar.

Baca juga  CodeIgniter 4 akhirnya release versi final!

Menggunakan Transaction untuk melakukan Testing

Kita juga bisa melakukan testing, sehingga meskipun query kita sudah berhasil semua tetep di rollback alias tidak berpengaruh di DB. Cocok kan buat testing-testing. Caranya hanya perlu menambahkan true di parameter transStartnya.

$this->db->transStart(true); // Query will be rolled back
$this->db->query('AN SQL QUERY...');
$this->db->transComplete();

Sekian catatan mengenai transaction di CodeIgniter 4. Semoga bisa memberikan manfaat.

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments