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 :
menggunakan fillable
menggunakan guarded
mass assignment fillable atau guarded baiknya pakai yang mana di laravel
1. March 15,
2020
Mass Assignment Fillable atau Guarded ? Baiknya pakai
yang mana di laravel
adinata.id/laravel/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 :
menggunakan fillable
menggunakan guarded
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 :
Nama
Alamat
Phone
1/3
2. 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 IlluminateDatabaseEloquentModel;
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 IlluminateDatabaseEloquentModel;
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 :
2/3
3. <?php
namespace App;
use IlluminateDatabaseEloquentModel;
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.
Salam,
Adinata
3/3