---
title: "Soft Deletes - ніколи не втрачайте дані"
url: https://laravelukraine.com/blog/soft-deletes-nikoli-ne-vtracaite-dani
author: "Олексій Бабінцев"
date: 2026-07-17
---

# Soft Deletes - ніколи не втрачайте дані

Користувач випадково видалив свій акаунт. Відновити не можна. Негатив забезпечено.

Soft Deletes позначають запис як видалений, але фактично не прибирають його з бази.

**Як працює:**

Додаємо поле `deleted_at`, а Laravel автоматично приховує такі записи.

**Корисні методи:**

* `forceDelete()` - повне видалення
* `withTrashed()` - включити видалені
* `onlyTrashed()` - лише видалені
* `restore()` - відновити

Порада: Сумісно з GDPR: можна відновити за 30 днів, а потім зробити force delete.

```php
// Міграція
Schema::table('users', function (Blueprint $table) {
  $table->softDeletes();
});

// Модель
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
  use SoftDeletes;
}

// Використання
$user->delete(); // Soft delete
$user->forceDelete(); // Повне видалення

// Запити
User::all(); // Тільки активні
User::withTrashed()->get(); // Включно з видаленими
User::onlyTrashed()->get(); // Лише видалені

// Відновлення
$user = User::withTrashed()->find(1);
$user->restore();

// Перевірка
if ($user->trashed()) {
  // Користувач видалений
}
```
