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.