oft Delete means the record is not permanently deleted from the database. Instead, Laravel marks it as deleted by filling the deleted_at column.

Soft Delete hides the record instead of permanently removing it.

Example

Step 1: Add deleted_at Column

php artisan make:migration add_deleted_at_to_users_table

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

Step 2: Use SoftDeletes Trait

app/Models/User.php

use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
    use SoftDeletes;
}

Step 3: Delete Record

User::find(2)->delete();

Laravel does not delete the row.

Instead, it updates:

deleted_at = 2026-07-23 10:30:00
idnamedeleted_at
1JohnNULL
2Peter2026-07-23 10:30:00
3DavidNULL

Output:

John
David