İçeriğe geç

Laravel Database Transaction İşlemi

Eğer bir fonksyon içerisinde birden fazla database işlemi yapıyorsanız örneğin insert update delete gibi işlemler ve son database işleminde hata aldınız? Bu durumda ilk başta yaptığınız queryler gerçekleşecek ancak son işlem gerçekleşmeyecektir ve buda kayıtlarınızın tutarlılığını bozacaktır. Bu durumda eğer bu qurerylerden birisi hata verirse diğerlerinin rollback yapıp eski haline dönmesini istiyorsunuz. İşte bu durumu çözecek yapının adı Transaction dır.

Laravelde kulanabilmek için DB classını kullanacağız.

DB::beginTransaction();

Bu komutu yazarak transaction yapacağımızı ve hiç bir işlemin anlık gerçekleşmemesi gerektiğini söylüyoruz. Daha sonra asıl querylerimizi yazmaya başlayabiliriz.

$withdraw = Withdraw::create($request->all());
$withdraw->commission = 2.5;
$withdraw->save();

$user = auth()->user();
$user->decrement("balance", 2.5); 
$user->save(); // diyelimki burası hata versin.

Son olarak ise bu querylerde bir hata olmaz ise bu queryleri topluca gönderiyoruz. Bunuda commit ile yapıyoruz.

DB::commit();

Bu durumda eğer $user->save() fonksyonu hata vermiş olsaydı, bir üstünde çalışan crate işlemi hiç çalışmamış olacaktı ve kayıt oluşmayacakı.

Tam kod olarak şöyle görebiliriz.

DB::beginTransaction();

$withdraw = Withdraw::create($request->all());
$withdraw->commission = 2.5;
$withdraw->save();

$user = auth()->user();
$user->decrement("balance", 2.5); 
$user->save(); // diyelimki burası hata versin. 

DB::commit();  // eğer hata yoksa hepsini db ye işleyecektir.
Tarih:Laravel

Tek Yorum

  1. Cok teşekkür ederim faydalı bir makale hep bunun araştırmasını yapmak istemişimdir

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir