Laravel'de Soft Delete Nasıl Kullanılır?

Laravel'de Soft Delete Nasıl Kullanılır?
Hüseyin Erbayat Okuma Sayısı: 15

Laravel'de Soft Delete Nasıl Kullanılır?

Laravel'de Soft Delete, veritabanındaki verileri kalıcı olarak silmek yerine "silinmiş gibi" işaretleme imkanı tanır. Bu işlem, verinin veritabanında kalmasını sağlar. Tablonun belirli bir alanında (deleted_at) silinme tarihinin saklaması ile yapılır.

1. Migration Oluşturma:

php artisan make:migration add_deleted_at_to_table_name_table

Migration dosyasında deleted_at alanını ekleyin:

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->softDeletes();
    });
}

2. Modelde Soft Delete Etkinleştirme:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class TableName extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}

3. Soft Delete Kullanma:

Veri silme işlemi delete() metoduyla yapılabilir:

TableName::find($id)->delete();

Soft delete yapılmış verileri de çekmek için withTrashed() veya sadece soft delete yapılmış verileri çekmek için onlyTrashed() metodlarını kullanabilirsiniz.

// Soft delete yapılmış verileri de çekmek için
$softDeletedData = TableName::withTrashed()->get();

// Sadece soft delete yapılmış verileri çekme
$onlySoftDeletedData = TableName::onlyTrashed()->get();

4. Soft Delete Yapılmış Veriyi Geri Getirme:

Soft Delete ile işaretlenmiş verileri geri getirmek için restore() metodunu kullanıyoruz. Örneğin, silinen bir kullanıcıyı geri getirmek için:

$user = User::onlyTrashed()->where('id', $userId)->first(); 
if ($user) { 
    $user->restore(); 
}