📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Laravel Framework Eloquent Soft Deletes

Eloquent Soft Deletes

4 min read
Soft delete records by setting deleted_at instead of removing rows — restore or forceDelete later.

Soft Deletes

// Migration
$table->softDeletes(); // adds deleted_at column

// Model
class Post extends Model {
    use SoftDeletes;
}

// Normal delete — sets deleted_at, not actually deleted
$post->delete();

// Queries — soft deleted excluded by default
Post::all();  // excludes soft deleted

// Include soft deleted
Post::withTrashed()->get();
Post::onlyTrashed()->get();

// Restore
$post->restore();
Post::onlyTrashed()->where("user_id", 1)->restore();

// Permanently delete
$post->forceDelete();

// Check
$post->trashed();  // true if soft deleted