Langsung ke konten utama

Memahami Perbedaan Fillable dan Guarded di Laravel Model secara Praktis

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba database kamu kena Mass Assignment Exception yang bikin pusing di tengah deadline. Kejadian ini sering banget menimpa developer yang buru-buru pakai User::create($request->all()) tanpa memikirkan celah keamanan di balik layar Laravel. Sebenarnya, Laravel memberikan $fillable dan $guarded bukan buat mempersulit hidup kita, tapi buat jadi benteng pertahanan data yang dikirim user secara asal-asalan.

Tips & Best Practices

Di banyak project, biasanya saya mulai dari pendekatan $fillable karena prinsip 'whitelist' jauh lebih aman daripada 'blacklist'. Saat aplikasi sudah punya banyak kolom, saya lebih suka memisahkan atribut yang sensitif seperti is_admin ke file terpisah atau logic yang lebih ketat agar tidak sengaja terpapar. Selain itu, kalau lagi buru-buru di tahap prototyping dan harus pakai $guarded = [], pastikan selalu menaruh komentar 'TODO' agar tidak lupa untuk menguncinya kembali sebelum push ke production.

Contoh Kode

Untuk kasus form profil user yang standar, biasanya kita membatasi apa saja yang boleh diubah agar user tidak iseng mengganti role mereka sendiri:

class User extends Model {
    // Hanya kolom ini yang bisa di-mass assign
    protected $fillable = ['name', 'email', 'bio'];
}

Sedangkan kalau kamu pakai $guarded, tujuannya adalah melindungi kolom sakral:

class Product extends Model {
    // Semua kolom boleh, kecuali id dan status_verifikasi
    protected $guarded = ['id', 'status_verifikasi'];
}

Variasi Implementasi

Kalau kita bandingkan, $fillable itu seperti daftar tamu undangan yang cuma boleh masuk, sedangkan $guarded itu seperti security yang membiarkan semua orang masuk kecuali daftar hitam yang dilarang. Kalau aplikasimu tipe yang punya puluhan kolom, $guarded mungkin terasa lebih ringkas. Tapi kalau security adalah prioritas utama, $fillable adalah cara terbaik supaya kamu tetap sadar tiap kali menambah kolom baru ke database.

Kesalahan Umum

  • Lupa menambahkan kolom baru ke $fillable sehingga data tidak tersimpan saat form submit.
  • Terlalu malas dan akhirnya menulis $guarded = [] di semua model tanpa pengecualian.
  • Menganggap $fillable melindungi data dari validasi, padahal ini cuma soal mass assignment.
  • Sering tertukar antara memakai $fillable atau $guarded secara bersamaan di satu model.
  • Mengabaikan celah saat menerima input langsung dari request tanpa sanitasi tambahan.

Ringkasan

Setelah sekian banyak drama error di console, saya sadar bahwa kunci dari fitur ini adalah kedisiplinan. Jangan melihat $fillable atau $guarded sebagai beban, tapi anggap itu sebagai pengingat supaya kita tahu persis apa yang masuk ke dalam database kita setiap harinya. Pada akhirnya, kode yang aman bukan cuma yang jalan, tapi yang meminimalisir kemungkinan kesalahan fatal di masa depan.

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?