Transaksi Database di Laravel
Laravel adalah kerangka kerja aplikasi web PHP yang menyediakan berbagai fitur, termasuk dukungan bawaan untuk transaksi basis data. Transaksi sangat penting saat bekerja dengan database untuk memastikan konsistensi dan integritas data.
Transaksi basis data memungkinkan Anda mengelompokkan beberapa operasi basis data ke dalam satu unit kerja. Transaksi membantu memastikan bahwa semua operasi basis data diselesaikan dengan sukses, atau dibatalkan jika terjadi kesalahan, meninggalkan basis data dalam keadaan konsisten.
Menggunakan Transaksi Secara Manual:
// Start transaction
DB::beginTransaction();
try {
// Run Queries
// perform database operations here
DB::insert(...);
DB::insert(...);
DB::insert(...);
DB::commit();
// all good
} catch (\\Exception $e) {
DB::rollback();
// something went wrong
}
Transaksi Database menggunakan penutupan .
Anda juga dapat menggunakan penutupan untuk membungkus operasi basis data Anda dalam sebuah transaksi:
use Illuminate\Support\Facades\DB;
DB::transaction(function () {
// perform database operations here
});
Jika salah satu operasi database gagal, pengecualian akan dilemparkan dan transaksi akan dibatalkan secara otomatis.
Jika penutupan berhasil dijalankan, transaksi akan secara otomatis dilakukan.
Anda tidak perlu khawatir tentang memutar kembali atau melakukan secara manual saat menggunakan transactionmetode ini:
use Illuminate\\Support\\Facades\\DB;
DB::transaction(function () {
DB::update('update users set votes = 1');
DB::delete('delete from posts');
});
DB::transaction(function() use ($details, $user) {
Expense::create($details);
$user->decrement('balance', $details->amount);
});
Transaksi harus dicoba kembali ketika kebuntuan terjadi. Setelah upaya ini habis, pengecualian akan dilemparkan:
use Illuminate\\Support\\Facades\\DB;
DB::transaction(function () {
DB::update('update users set votes = 1');
DB::delete('delete from posts');
}, 5);

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































