Mass Assignment Fillable atau Guarded ? Baiknya pakai yang mana di laravel
Pada proses pengembangan aplikasi tentu kita akan sering menggunakan atau melakukan mass Assignment jika aplikasi yang kita bangun merupakan aplikasi yang statefull salah satu nya yaitu saat melakukan penambahan data ( insert ).
Di Laravel ada 2 cara agar kita dapat melakukan mass assigment antara lain :
Lalu apa bedanya antara fillable dengan guarded ? Pada variable fillable kita dapat menambahkan attribute-attribute yang kita izinkan untu di isi pada saat proses penambahan data ( insert ).sementara guarded adalah variable yang merupakan kebalikan dari fillable dimana attribute yang terdapat di dalam guarded tidak diizinkan untuk di lakukan mass assignment.
Agar lebih jelas mari kita coba dengan studi kasus saja dalam case ini kita coba membuat sebuah model dengan nama contact pada model contact kita memliliki attribute antara lain :
misal pada saat menyimpan data kita hanya mengizinkan mass assignment untuk attribute nama dan phone saja maka di dalam model contact kita dapat menggunakan variable $fillable berikut contoh penggunaannya :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model; class Contact extends Model { protected $fillable = ['nama','phone']; }
Perhatikan kode diatas dimana di dalam variable $fillable kita menambahkan array dengan attribute nama dan phone dengan begitu ketika kita menambah data ( insert ) maka data yang tersimpan adalah hanya data nama dan phone saja.
Namun jika data field dalam tabel kita banyak bagaimana ? tentu menulis field-field yang diizinkan untuk di insert akan menjadi menghabiskann waktu ? Tenang laravel sudah memikirkan hal tersebut di saat itulah kita tepatnya menggunakan variable guarded dimana fungsinya merupakan kebalikan dari fillable dengan guarded kita cukup menambahkan field / attribute yang tidak di izinkan untuk di insert misal untuk data yang tidak boleh di insert adalah field phone selain itu kita dapat menambahkan datanya maka kita dapat menuliskan kodingnya sbb :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model {
protected $guarded = ['phone'];
}
Dari koding diatas maka selain field phone dapat kita tambahkan datanya.
Lalu jika ada kasus dimana saya mau seluruh field yang ada di tabel contact boleh di izinkan untuk mass assignment tambah data ( insert ) lalu bagaimanan caranya ? caranya simple kita dapat membuat variable guarded dimana nilainya berupa array kosong saja untuk kode programnya sbb :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model {
protected $guarded = [];
}
Pada koding diatas maka kita dapat melakukan mass assigment terhadap seluruh field yang terdapat pada tabel contact.
Kesimpulan :
Dengan mempelajari kapan kita harus menggunakan fillable dan guarded tentu akan sangat membantu kita untuk mengelola attribute yang diizinkan untuk melakukan mass assignment pada attribute-attribute tertentu untuk di lakukan mass assignment ataupun sebaliknya.
saya juga ada menulis mengenai penggunaan eloquent find dan all bagi anda yang ingin mempelajarinya silahkan baca disini
Silahkan Bagikan tulisan ini agar lebih banyak programmer Laravel yang mendapatkan manfaat dari tulisan ini.
Originally published at https://adinata.id on March 15, 2020.