Database Transaction on Laravel

Adam Ghirvan Fadhil
DOT Intern
Published in
2 min readSep 17, 2019

Bagaimanapun juga, menjalankan banyak query pada satu waktu sangat rawan bagi aplikasi. Contoh kasus yaitut ransaksi perbankan, umpamanya transfer Rp. 100.000 antar dua akun bank. Untuk menyimpan uang ke dalam satu akun, kita harus terlebih dahulu mengambil uang dari rekening lain. Tanpa menggunakan transaction, kita harus menulis pernyataan SQL yang melakukan hal berikut:

  1. Periksa apakah saldo akun pertama lebih besar dari Rp. 100.000.
  2. Kurangi Rp. 100.000 dari akun pertama.
  3. Tambahkan Rp. 100.000 ke akun kedua.

Selain itu, kita harus menulis kode untuk pengecekan kesalahan dalam program kita, khususnya untuk menghentikan operasi jika akun pertama tidak memiliki lebih dari Rp. 100.000 atau jika pernyataan deduksi tersebut gagal. Dengan transaction akan membuat lebih mudah, karena jika ada bagian dari operasi yang gagal, keseluruhan transaction akan dilepas. Ini berarti bahwa tabel dan data di dalamnya kembali ke keadaan sebelumnya.

Apa itu DB Transaction ?

DB Transaction adalah metode di laravel yang digunakan untuk mengawasi jalannya query pada saat menjalankan suatu fungsi aplikasi. Terdapat 3 metode yang biasa digunakan saat menggunakan DB transaction yaitu :

  1. DB::beginTransactions
    Kalian dapat menggunakan metode ini untuk memulai transaksi pada permulaan statement
  2. DB::commit
    Metode ini digunakan untuk menyimpan semua operasi yang dilakukan setelah metode DB::beginTransactions
  3. DB::rollback
    Metode ini digunakan untuk membatalkan semua operasi yang dilakukan setelah metode DB::beginTransaction

Implementasi DB Transaction

Kita dapat menggunakan try catch pada saat menggunakan database transaction untuk handle error. Gunanya agar kita dapat mendeteksi error dan merollback (menggagalkan sistem menyimpan data).

Jadi kode di atas itu akan menjalankan fungsi create, lalu mulai transaksi di line 15 query pertama adalah membuat user bila pada query ini terjadi error maka try catch akan menangkap error dan menembak ke line 37.
Kasus kedua query pertama berhasil tersimpan di database tetapi pada saat query kedua dijalankan terjadi error maka try catch akan menangkap error dan menembak ke line 37 dan merollback query pertama yang berhasil tersimpan, begitulah penjelasan kode di atas.

Bagaimana ? menggunakan DB Transaction sangat membantu dalam penanganan fungsi yang memiliki banyak query bukan ? kalau kalian tertarik mempelajari lebih lanjut klik link berikut yaaa https://laravel.com/docs/5.8/database#database-transactions

--

--