Cara Menggunakan Soft Delete untuk User di Laravel

Oleh 3E_Ivan Pranata di 25 Sep 2025 | 17:52
3E_Ivan Pranata

3E_Ivan Pranata

Siswa
Postingan: 2
Anggota sejak: 9 Sep 2025

Halo teman-teman, kali ini saya mau share tutorial tentang Soft Delete di Laravel khusus untuk User.
Soft Delete ini artinya data user tidak benar-benar hilang dari database, melainkan hanya ditandai di kolom deleted_at. Jadi, data masih bisa di-restore kapan saja, atau dihapus permanen bila diperlukan.


Buat / tambah kolom deleted_at pada tabel Users 

Secara default laravel sudah menyediakan tabel Users, jadi pada contoh ini hanya perlu menambahkan 1 kolom deleted_at pada tabel Users.

Gunakan SoftDeletes pada model User

Cari dulu direktori model pada projek laravel kalian,  pada contoh ini terdapat pada app/Models/ , kemudian buka file User.php lalu tambahkan SoftDeletes pada use.


Buat Controller 

Controller di Laravel itu bisa dibilang jadi jembatan antara database sama tampilan. Pada contoh soft delete di data user, perannya si controller ini buat mengatur alur logika  seperti nampilin daftar user yang masih aktif, nampilin user yang udah dihapus sementara, ngehapus user pake soft delete, balikin lagi user yang udah dihapus (restore), atau hapus permanen dari database (force delete).


Disini saya membuat controller baru yaitu UserController.php. Berikut kode programnya:



    namespace App\Http\Controllers;

    use App\Models\User;
    use Illuminate\Http\Request;

    class UserController extends Controller
    {
       
        public function index()
        {
            $users = User::all();
            return view('users.index', compact('users'));
        }

        public function store(Request $request)
        {
            $request->validate([
                'name'     => 'required|string|max:255',
                'email'    => 'required|email|unique:users',
                'password' => 'required|min:6',
            ]);

            User::create([
                'name'     => $request->name,
                'email'    => $request->email,
                'password' => bcrypt($request->password),
            ]);

            return redirect()->route('users.index')->with('success', 'User berhasil ditambahkan');
        }

        public function destroy($id)
        {
            $user = User::findOrFail($id);
            $user->delete();
            return back()->with('success', 'User berhasil dihapus (soft delete)');
        }

        public function trashed()
        {
            $users = User::onlyTrashed()->get();
            return view('users.trashed', compact('users'));
        }

        public function restore($id)
        {
            $user = User::withTrashed()->findOrFail($id);
            $user->restore();
            return back()->with('success', 'User berhasil dipulihkan');
        }

        public function forceDelete($id)
        {
            $user = User::withTrashed()->findOrFail($id);
            $user->forceDelete();
            return back()->with('success', 'User dihapus permanen');
        }
    }



  • Tambahkan Routes

  • jangan lupa gunain controller yang sudah dibuat, disini saya pakai UserController.


View

disini saya buat 2 file blade.php sederheana berbeda, 1 untuk lihat user aktif dan 1 untuk lihat user yang tersoft delete, user yang di soft delete nggak langsung hilang dari database, tapi cuma ditandai dengan kolom deleted_at. Dengan begitu, data masih bisa dipulihkan kapan saja lewat fitur restore, atau kalau benar-benar sudah nggak dipakai baru dihapus permanen.



View awal, kemudian akun Ivan di soft delete.



View user terhapus kemudian akun Ivan di restore kembali.






25 Sep 2025 | 17:52
0 Suka

Laporkan

Silakan jelaskan laporan secara singkat dan jelas.