Langsung ke konten utama

Cara Implementasi Soft Deletes di Laravel dengan Cara yang Benar

Pendahuluan

Bayangin lagi ngerjain fitur CRUD standar, tapi tiba-tiba klien minta data yang udah dihapus pengen bisa dibalikin lagi. Biasanya panik karena udah kadung pakai delete() biasa, akhirnya data musnah tanpa jejak. Untungnya di Laravel, kita punya fitur Soft Deletes yang bikin hidup lebih tenang karena data nggak beneran hilang, cuma 'disembunyiin' dari query.

Tips & Best Practices

  • Di banyak project, saya selalu mastiin kolom deleted_at udah ada di migration sebelum nge-run fitur apa pun agar nggak ada error 'Column not found' saat query berjalan.
  • Pas lagi nanganin relasi yang kompleks, saya lebih suka pakai withTrashed() daripada maksa join manual supaya logika relasi tetap bersih dan gampang dibaca sama rekan tim lain.
  • Saat ngerjain fitur restore, saya selalu nambahin pengecekan apakah data beneran ada atau udah permanen hilang supaya user nggak dapet error aneh saat proses pemulihan.

Contoh Kode

Ini cara saya biasanya pasang di model biar nggak ribet:

use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model {
    use SoftDeletes;
    protected $dates = ['deleted_at'];
}

Kalau butuh akses data yang udah 'terhapus', biasanya saya tulis gini pas di controller:

$posts = Post::withTrashed()->where('user_id', $id)->get();

Variasi Implementasi

Ada dua pendekatan yang sering saya bandingin. Pertama, pakai SoftDeletes bawaan yang udah otomatis, ini favorit saya karena minim konfigurasi. Kedua, bikin custom trait sendiri kalau kita punya kebutuhan unik, misalnya ingin nyimpen siapa yang menghapus data (deleted_by) atau alesan penghapusannya. Keduanya punya tradeoff: bawaan Laravel lebih cepet diimplementasi, sedangkan custom trait lebih fleksibel buat sistem audit log yang ketat.

Kesalahan Umum

  • Lupa nambahin trait SoftDeletes di model tapi udah nekat manggil method restore().
  • Nggak nge-update table migration, sering banget kejadian lupa nambahin nullable kolom deleted_at.
  • Pakai forceDelete() tanpa sadar pas lagi buru-buru, ujung-ujungnya data ilang permanen padahal rencananya cuma mau non-aktifin aja.
  • Kebingungan pas query pakai join manual, karena default-nya join di Laravel nggak otomatis nyaring deleted_at.
  • Nggak nge-handle query global scope yang bikin data 'terhapus' ikutan muncul di laporan dashboard.

Ringkasan

Soft Deletes itu penyelamat saat ada 'accident' di sistem. Intinya, manfaatin fitur ini bukan buat nyimpen sampah, tapi buat ngasih jaring pengaman ke user. Pas udah paham cara kerja dibalik layarnya, kita jadi lebih pede pas ngerjain fitur hapus-menghapus tanpa harus takut dimaki klien pas datanya mendadak ilang.

Komentar

Postingan populer dari blog ini

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?