Soft delete đánh dấu record là đã xóa mà không thực sự xóa khỏi database. Thêm vào model: use SoftDeletes; và migration thêm $table->softDeletes(); tạo cột deleted_at. Query tự động loại trừ record đã soft-delete: User::all() không bao gồm đã xóa. Truy cập bằng: User::withTrashed()->get() (bao gồm đã xóa), User::onlyTrashed()->get() (chỉ đã xóa), $user->restore() (khôi phục), $user->forceDelete() (xóa vĩnh viễn).
Lợi ích: giữ dữ liệu để audit/phục hồi, hoàn tác xóa nhầm, tuân thủ quy định giữ bản ghi. Soft delete tăng độ an toàn dữ liệu.