Accessor and Mutator Laravel
Berdasarkan doc laravel, accessors dan mutator
Accessors and mutators allow you to format Eloquent attribute values when you retrieve or set them on model instances. For example, you may want to use the Laravel encrypter to encrypt a value while it is stored in the database, and then automatically decrypt the attribute when you access it on an Eloquent model.
accessor dan mutator membolehkan kita untuk melakukan format terhadap atribut dari model ketika mengambil atau melakukan set pada instance model , Sebagai contoh, ketika menggunakan encrypter untuk meng-enkripsi sebuah nilai ketika nilai tersebut disimpan ke dalam database, kemudian secara otomatis akan di-dekripsi ketika mengakses nilai itu.
Contoh ketika data kolom dalam database adalah berupa tipe timestamp, kemudian ketika kita mau menampilkan/ mengambil data tersebut supaya format yang dikembalikan adalah berupa tanggal, caranya adalah dengan membuat accessor,
Accessor
Function ditandai dengan awalan get, contoh :
public function getTanggalAttribute($value)
{
return date('Y-m-d', strtotime($value));
}
tipe data tanggal pada database adalah timestamp, sedangkan jika kita deklarasikan dengan accessor tersebut maka ketika kita mengambil data tanggal maka akan dikembalikan data berupa date.
Mutator
Function ditandai dengan set, contoh
ketika kita mau menyimpan data nama dengan tipe varchar, dan ada keharusan supaya data yang disimpan ke dalam database adalah harus dengan huruf besar (uppercase), maka dapat kita buatkan mutatornya , seperti ini :
public function setNamaAttribute($value)
{
$this->attributes['nama'] = strtoupper($value);
}
Sedangkan jika ada aturan yang mewajibkan data nama ketika disimpan huruf pertama harus kapital , maka bisa menggunakan function ucfirst dari php, contoh mutatornya adalah sebagai berikut :
public function setNamaAttribute($value)
{
$this->attributes['nama'] = ucfirst($value);
}
Semisal ada aturan lain harus disimpan dalam huruf kecil semua sebutlah untuk kolom email dan website maka kita gunakan function strtolower dari php, sehingga mutatornya adalah sebagai berikut :
public function setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}
untuk website :
public function setWebsiteAttribute($value)
{
$this->attributes['website'] = strtolower($value);
}
Sekian gan semoga ada manfaatnya buat ana dan kita semue ye, sebagai catatan untuk pengingat sewaktu lupa.
No comments:
Post a Comment