Laravel’de Yazılımsal Silme (Soft Delete) İşlemleri

Laravel’de Yazılımsal Silme (Soft Delete) İşlemleri

Yazılımcıların sıklıkla karşılaştığı bir durum olsa gerek verilere geri ulaşabilme daha öncelerde bu işlemleri tabloya eklediğimiz delete isimli bir kolon aracılığıyla yapıyorduk, bu kolona tinyInteger yaparak 1 veya 0 işlemleri yapıyorduk. Mantıken 0 silinmemiş 1 ise silinmiş içerik olarak kabul ediyor ve verileri çekerken where kısmına delete=0 şeklinde çekiyorduk.
Fakat bu işlem laravel sistemlerde ORM’nin bize sunduğu soft delete ile daha stabil ve kolay bir şekilde yapılmaktadır. Gelin birlikte laravel’in bize sunduğu yazılımsal veri silinmesine göz atalım.
Öncelikle ilgili model’i açıyoruz ve alt kısımda belirttiğimiz kod kısmını ekliyoruz.

    use SoftDeletes;
    protected $dates = ['deleted_at'];

Mevcut migrate mantığı ile migrate ise alt kısımdaki kod’u ekleyelim.

    $table->softDeletes();

Yeniden migrate yapmayı unutmayarak kontrol işlemlerini gerçekleştirelim.
Çöp kutusu gibi görüntüleyebileceğimiz şekli.

if ($flight->trashed()) {
    //
}

Silinmiş veriler dahil çekebilmek için;

$users= App\User::withTrashed()->where('rol', 2)->get();

Diğer bir kullanım şekliyle;

$users->history()->withTrashed()->get();

Sadece silinmiş öğelere ulaşabilmek için;

$users= App\User::onlyTrashed()->where('rol', 2)->get();

Silinmiş içereği geri kazanabilmek için

App\User::withTrashed()->where('id', 1)->restore();

Diğer bir kullanım şekliyle;

$users->history()->restore();

Ben illa bu veriyi silmek istiyorum derseniz alt kısımdaki kod sizin için;

$users->forceDelete();

Çöp kutusu mantığıyla düşünürsek çöp kutusunu temizleme mantığı

$users->history()->forceDelete();

Daha ayrıntılı bilgi için laravel dökümantasyonunu inceleyebilirsiniz.
Yararlı olabildiysem ne mutlu, Hatam var ise bildirilirse düzeltebilirim.

Beğen  2
Yazar

2008, Yılından beri sistem ve yazılım teknolojileri ile ilgilenmekteyim. Ayrıntılı bilgi için hakkımda sayfamı inceleyebilirsiniz.

Bir Cevap Yazın

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

Yapılan Yorum (1)