Laravel'de Transaction kullanımı

Merhaba,


Bu yazıda Laravel'de Transaction kullanımından bahsedeceğim. Transaction tam olarak ne işe yarar derseniz şöyle bir senaryodan bahsedebilirim: Veritabanında iki farklı tablonuz olduğunu ve bir fonksiyonda bu iki tabloya da sırayla veri kaydettiğinizi düşünelim. Birinci tabloya veriyi sorunsuz olarak kaydettiniz. Ancak ikinci tabloda bir sorun oldu ve işlem başarısız olarak sonuçlandı. Böyle bir durumda birinci tabloda yapılan işlemin geri alınması gerekir ki projede patlamalar yaşanmasın. İşte tam bu noktada karşımıza Transaction çıkıyor. Transaction kullanarak, veritabanına yapılan işlemlerde hiçbir sorun yoksa işlemleri kaydet, herhangi bir sorun varsa işlemleri geri al demiş oluyoruz.


Hemen Laravel üzerindeki kullanımına örnek bir kod parçasıyla göz atalım:

public function save()
{
    DB::beginTransaction();
    try {
        $user = new User;
        $user->name = 'Yusuf';
        $user->save();
        
        $user_role = new UserRole;
        $user_role->user_id = $user->id;
        $user_role->role_id = 1;
        $user_role->save();
    } catch (\Exception $e) {
        DB::rollBack();
    }
    DB::commit();
}
  • Veritabanında bir işlem (transaction) başlattık.
  • try-catch blokları içerisinde users ve user_roles tablolarına veri kaydı yaptık. Herhangi bir hata durumunda veritabanında yapılan işlemleri geri almasını (rollback) söyledik.
  • Hiçbir hata yoksa veritabanında yapılan işlemleri kaydetmesini (commit) söyledik.


İyi çalışmalar.

Yusuf Borucu

Benim adım Yusuf. 1993 yılında Şanlırfa'da doğdum. 2015 yılında Bilecik Şeyh Edebali Üniversitesi'nde Bilgisayar Mühendisliği bölümünden mezun oldum. Şu anda özel bir şirkette Yazılım Geliştirici olarak çalışmaktayım. Yazılıma yönelik uğraştığım, sevdiğim ve ilgi duyduğum teknolojilerden bahsetmem gerekirse; Laravel, MySQL (mevcut çalıştığım şirkette uğraştıklarım). Asp.Net Mvc, MSSQL (önceden çal...

"Laravel'de Transaction kullanımı" için hiç yorum yapılmadı.

Henüz yorum yapılmamış.

Yorum yap * E-posta adresiniz yayınlanmayacak.