Soft delete đánh dấu record là đã xoá mà không thực sự xoá 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 đã xoá. Truy cập bằng: User::withTrashed()->get() (bao gồm đã xoá), User::onlyTrashed()->get() (chỉ đã xoá), $user->restore() (khôi phục), $user->forceDelete() (xoá vĩnh viễn).
Lợi ích: giữ dữ liệu để audit/phục hồi, hoàn tác xoá nhầm, tuân thủ quy định giữ bản ghi. Soft delete tăng độ an toàn dữ liệu.