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();
}