"Verileri silmek gerçekten gerekli mi?" Laravel'in Soft Delete özelliğiyle verilerinizi gerçekten silmeden nasıl güvenle yöneteceğinizi öğrenelim!
Soft Delete (Yumuşak Silme), veritabanından tamamen silmek yerine:
deleted_at
sütununu doldurur 📅// Normal silme (Hard Delete) $user->delete(); // Veri TAMAMEN silinir // Soft Delete $user->delete(); // Sadece deleted_at dolar
Migration:
Schema::table('users', function (Blueprint $table) { $table->softDeletes(); // deleted_at sütunu ekler });
Model:
use Illuminate\Database\Eloquent\SoftDeletes; class User extends Model { use SoftDeletes; protected $dates = ['deleted_at']; }
SenaryoHard DeleteSoft DeleteKullanıcı hesap silme❌ Riskli✅ GüvenliSipariş iptali❌ Veri kaybı✅ İz bırakırİçerik moderasyonu❌ Geri dönüşsüz✅ Geri yükleme
// Aktif kayıtlar (silinmemiş) User::all(); // Sadece silinmişler User::onlyTrashed()->get(); // Tüm kayıtlar (silinenler dahil) User::withTrashed()->get();
$user->restore(); // Tekli User::onlyTrashed()->restore(); // Toplu
$user->forceDelete(); // Veritabanından kalıcı siler
class User extends Model { protected static function boot() { parent::boot(); static::deleting(function($user) { $user->posts()->delete(); // İlişkili postları da soft delete }); static::restoring(function($user) { $user->posts()->restore(); // Geri getirirken postları da restore }); } }
// Silinmemiş postları getir $user->posts()->withoutTrashed()->get(); // Sadece silinmiş postlar $user->posts()->onlyTrashed()->get();
class User extends Model { protected static function boot() { parent::boot(); static::addGlobalScope('not_deleted', function (Builder $builder) { $builder->whereNull('deleted_at'); }); } }
// AdminController public function index() { return User::withTrashed()->get(); }
// TrashController public function index() { return view('users.trash', [ 'users' => User::onlyTrashed()->get() ]); } public function restore($id) { User::onlyTrashed()->findOrFail($id)->restore(); return back(); }
ÖzellikAvantajDezavantajVeri Kurtarma✅ Kolay geri yükleme❌ Daha fazla depolamaVeri Bütünlüğü✅ İlişkiler korunur❌ Karmaşık sorgularPerformans⚠️ Küçük performans etkisi🚀 Hard delete'den yavaş
Soft Delete ile:
Projelerinizde soft delete kullanıyor musunuz? Deneyimlerinizi yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de API Caching: Hızlı ve Verimli API Tepkileri] - API'nizi turbo hızına çıkarın!
#Laravel #Database #SoftDelete #WebDevelopment #Backend 🚀