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| id | name | deleted_at |
|---|---|---|
| 1 | John | NULL |
| 2 | Peter | 2026-07-23 10:30:00 |
| 3 | David | NULL |
Output:
JohnDavid