Giriş yapmadınız.

#1 08.02.2019 21:39:01

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 53

Laravel image upload ve db insert sırasında hata oluşursa transaction

Merhabalar,
Laravel 5.7 ile yazdığım blog çalışmamda post kaydedilirken image dosyasını Intervention image ile kaydediyorum ve bu kaydedilen dosyanın path yolu ile beraber post u kaydediyorum ve ilgili postun tag ları taggable kütüphanesi ile kaydediyorum.
Request ile gelen veriler validate ediliyor fakat yine de olurda image yüklenirken , post kaydedilirken veya tag kaydedilirken öncesinde gerçekleşen işlemlerin hepsini geri almak istiyorum.
Ne yapmam gerekiyor bu konuda ?

Çevrimdışı

#2 08.02.2019 23:43:43

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,703
Website

Yanıt: Laravel image upload ve db insert sırasında hata oluşursa transaction

Ne yapmam gerekiyor bu konuda ?

Yaptığınız işlemleri geri alan başka kodlar yazacaksınız, bunun hazır bir yolu yok, ama öncesinde Validation kullanarak güçlü bir sınama ile hata alma olasılığınızı minimuma indirebilirsiniz.

Diğer bir yolu daha var ama bu sizin blog projenizi aşıp üstüne geçecektir, o yüzden gerek yok bence.

Çevrimdışı

#3 09.02.2019 02:44:50

kazim.karagul
Üye
Kayıtlı: 01.11.2014
Mesajlar: 179

Yanıt: Laravel image upload ve db insert sırasında hata oluşursa transaction

Konuyu anlayarak kendinize göre uygularsanız işinize yarayabilir.

https://stackoverflow.com/questions/229 … ransaction

Çevrimdışı

#4 09.02.2019 13:02:58

caner_dmn
Üye
Kayıtlı: 23.05.2018
Mesajlar: 60

Yanıt: Laravel image upload ve db insert sırasında hata oluşursa transaction

DB::beginTransaction();

try {
    DB::insert(...);
    DB::insert(...);
    DB::insert(...);

if(!file_exists('images/'.$image_name)){

    //klasörün içinde isimle uyuşan bir resim yoksa throw vererek try dan çıkalım. 
    throw new Exception('Resim klasörde bulunmuyor.');

}

    DB::commit(); // kodlarda hata olmadan buraya kadar geldiyse database işlemleri commit ediyor.
  
} catch (\Exception $e) {
    DB::rollback(); // kodda herhangi bir yerde hata alınırsa database işlemleri geri alınması için rollback.
}

Bu şekilde bir hata yakalama senaryosu kurabilirsiniz. Klasör içinde resim yoksa rollback işlemi çalışacaktır. Buradaki if kontrollerini kendinizde çeşitlendirebilirsiniz. Örnek olarak isim ile kontrol sağladık.

Çevrimdışı

Forum alt kısmı