Matawebsite Promo Lebaran 2022

Menggunakan Database Transaction Pada Laravel

date 08 Jul 2021
date Sulfikardi
date 8275
date Web Programming
Menggunakan Database Transaction Pada Laravel

Database transaction adalah salah satu subset yang disediakan SQL, digunankan untuk mengatur alur data transaksi dalam suatu database. Praktisnya, Kita dapat menggabungkan banyak kueri SQL ke dalam grup dan akan mengeksekusi semuanya secara bersama sebagai bagian dari Transaction. Jika ada kegagalan dalam 1 node (proses), seluruh transaksi (proses input) akan dibatalkan.


Di Laravel 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

Sifat Transaksi

  1. Atomicity - memastikan bahwa semua operasi dalam unit kerja diselesaikan dengan sukses. Jika tidak, transaksi dibatalkan pada titik kegagalan dan semua operasi sebelumnya dikembali ke keadaan semula.
  2. Consistency- memastikan bahwa database mengubah status dengan benar pada transaksi yang berhasil dilakukan.
  3. Isolation - memungkinkan transaksi untuk beroperasi secara independen dan transparan satu sama lain.
  4. Durability - memastikan bahwa hasil atau efek dari transaction commit tetap ada jika terjadi kegagalan sistem.

Contoh Penggunaan:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
});

 

Atau dengan menggunakan manual transaction, contoh penggunaannya sebagai berikut:

public function store()

    {

        DB::beginTransaction();

        try{

            // Step 1 : Create User

            $user = new User();

            $user->email = $request->email;

            $user->username = $request->username;

            $user->save();

 

            //Step 2 : Amount Charged

            $user_amount = new UserAmount();

            $user_amount->user_id = $user->id;

            $user_amount->amount = $request->amount;

            $user_amount->save();


 

            DB::commit();

 

            return redirect()->route('home')->with('success','Transaction Successfully');
 

        }catch(\Exception $e){

            DB::rollback();

            return redirect()->back()

            ->with('warning','Something Went Wrong!');

        }

    } 

Matawebsite Promo
sul.png

Sulfikardi

Web Design & Web Programming

Halo, saya seorang Web Developer yang terbiasa mengembangkan website menggunakan HTML, CSS, Javascript, PHP, MYSQL, dan Laravel. Disini saya akan membagikan pengalaman saya dalam membangun dan mengembangan website yang responsif dan dinamis

Artikel Populer

Halo, ada yang bisa kami bantu?
Daftar Sekarang