Langsung ke konten utama

Cara Implementasi Soft Deletes Laravel untuk Keamanan Data Proyek

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba client atau bos minta data yang udah dihapus balik lagi gara-gara kepencet. Kebanyakan dari kita pasti panik kalau database cuma punya perintah DELETE, karena data itu hilang permanen. Untungnya, Laravel punya fitur Soft Deletes yang bikin kita bisa 'nyembunyiin' data tanpa harus benar-benar menghapusnya dari disk.

Tips & Best Practices

Di banyak project, biasanya saya mulai dengan memastikan kolom deleted_at sudah ada di tabel migrasi. Jangan pernah lupa pakai $table->softDeletes() saat bikin tabel, biar kita nggak perlu nambahin kolom manual yang malah rawan typo.

Sering banget saya lihat orang buru-buru, padahal penting banget untuk selalu ngecek relasi antar tabel sebelum melakukan soft delete. Kalau kita hapus parent tapi child-nya masih nempel, nanti bakal muncul error Integrity Constraint Violation yang bikin aplikasi crash di production.

Pas lagi bikin dashboard admin, saya lebih suka misahin antara data aktif dan data sampah di query. Pakai onlyTrashed() secara eksplisit itu ngebantu banget biar kita tahu pasti data mana yang memang harusnya dibuang dan mana yang cuma mau kita restore.

Contoh Kode

Untuk pakai fitur ini, tinggal masuk ke model kalian dan panggil trait-nya:

use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model {
    use SoftDeletes;
}

Nanti waktu kalian panggil $post->delete(), Laravel otomatis ngisi kolom deleted_at tanpa ngilangin record-nya. Kalau mau balikin lagi, cukup pakai $post->restore().

Variasi Implementasi

Kadang kita punya kebutuhan khusus, misalnya mau hapus data secara permanen (hard delete) untuk data sensitif. Kita bisa pakai $post->forceDelete() untuk bener-bener ngebersihin row dari database. Pilihannya tergantung kebutuhan: kalau untuk data user atau transaksi, biasanya saya lebih milih soft delete biar ada audit trail yang rapi, tapi buat log yang nggak penting, hard delete jauh lebih ngirit storage.

Kesalahan Umum

1. Lupa nambahin trait SoftDeletes di model, hasilnya query delete jadi permanen padahal udah capek-capek nambahin kolom deleted_at.
2. Mengabaikan relasi foreign key, jadi pas data dihapus, aplikasi malah lempar error database karena constraint-nya belum diatur ke onDelete('cascade') atau set null.
3. Terlalu sering pakai withTrashed() di semua query, yang ujung-ujungnya bikin performa aplikasi lemot karena database harus nge-scan data sampah juga.
4. Lupa nge-filter data trashed di API response, alhasil user bisa ngelihat record yang harusnya udah nggak tampil.
5. Asumsi kalau SoftDeletes bakal ngurusin segala hal secara otomatis tanpa butuh migrasi kolom, padahal database perlu tahu kalau ada kolom baru yang dimonitor.

Ringkasan

Soft deletes itu penyelamat buat developer yang sering dapet request 'balikin data dong'. Intinya, jangan anggap fitur ini cuma buat iseng, tapi sebagai layer pengaman tambahan. Pas project udah gede, nanti bakal kerasa sendiri manfaatnya pas ada data penting yang nggak sengaja terhapus dan kita bisa balikin dalam hitungan detik.

Komentar

Postingan populer dari blog ini

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.

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:

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?