Mempelajari Accessors dan Mutators pada Laravel untuk Modifikasi Atribut Model – Haloo semuanya, Assalaamualaikum wr wb..
Salah satu trick magic yang ada pada eloquent laravel yaitu terdapat nya fitur accessor dan mutator..
Apa itu accessor dan mutator?
Jadi 2 fitur itu adalah untuk me-modifikasi atribut yang ada pada model eloquent Laravel..
Biasanya, 2 hal ini juga sering disebut sebagai Getter dan Setter..
Nah, apa itu?
Kita bahas secara detail satu persatu yaa.. kita mulai dari Accessor terlebih dahulu
Mempelajari Accessors dan Mutators pada Laravel untuk Modifikasi Atribut Model
Ketika kalian sedang berada di posisi backend developer, kemudian kalian mengirimkan sebuah data yang berasal dari table Penjualan..
Anggap saja table Penjualan tersebut memiliki spesifikasi / atribut kolom seperti berikut:
- Kolom customer, misalkan dengan value Customer A..
- Kolom produk, misalkan dengan value iPhone 11
- Kolom qty, misalkan dengan value 1
- Kolom harga, misalkan dengan value 11500000
- Kolom total_harga, dengan value 11500000
Kemudian kita get table Penjualan tersebut, dan juga kita return kedalam sebuah json, maka hasilnya akan menjadi seperti berikut:
$data = Penjualan::get(); return response()->json($data);
Kalo kalian belum memahami tentang cara membuat API pada Laravel, di artikel sebelumnya kita sudah pernah membahas nya, silahkan kalian buka Panduan Lengkap Belajar API Laravel + Studi Kasus..
Nah terkadang, orang front end nya ingin harga / total_harga tersebut dikirim dengan format angka nya, beserta dengan kode mata uang nya..
Misalkan atribut harga diubah menjadi seperti -> “Rp. 11,500,000”..
Kita bisa menggunakan fitur Accessors yang ada pada eloquent laravel..
Cara Membuat Accessors
Pertama, syarat untuk pembuatan accessors pada eloquent model adalah seperti berikut:
- Diawali dengan kata “get..”
- Diakhiri dengan kata “..Attribute”
- Format penulisan nya adalah Camel Case..
- Dan dipanggil dengan format penulisan Snake Case..
Bagi kalian yang belum mengetahui tentang perbedaan penulisan code antara Camel Case dengan Snake Case, bisa kalian kunjungi halaman berikut..
Contoh Koding didalam model nya adalah seperti berikut:
.... class Penjualan extends Model { // public function getHargaFormatAttribute() { return 'Rp. ' . number_format($this->harga); } }
Kita bisa cek script function diatas, getHargaFormatAttribute()..
Diawali dengan kata get, diakhiri dengan kata Attribute, dan ditulis dengan format Camel Case..
Nah nanti kalian bisa panggil Accessors tersebut dengan metode penulisan snake case, dan kata get serta attribute nya tidak perlu kalian tulis lagi..
Sehingga untuk contoh pemanggilan nya adalah seperti berikut:
..->harga_format
Atau jika kalian ingin membawa nya kedalam response json, maka kalian perlu meng-append nya terlebih dahulu didalam model nya, seperti berikut:
Maka ketika nanti kalian akses lagi endpoint API nya, seharusnya response json nya akan bertambah 1 atribut baru seperti berikut:
Cara Membuat Mutator
Kalo tadi kita sudah mempelajari tentang Accessors yang fungsinya untuk manipulasi data atribut model yang akan ditampilkan..
Kali ini kita akan mempelajar mutator, yaitu kebalikan nya dari Accessor, yang fungsinya untuk modifikasi sebuah atribut yang akan disimpan kedalam database..
Agar lebih memahami, kita analogikan seperti berikut..
Terkadang, saat kita sedang ingin menginput sebuah data kedalam database, kita ingin data tersebut disimpan dengan huruf besar semua nya..
Kita pasti mengenal perintah strtoupper(), yaitu sebuah script untuk merubah sebuah kalimat menjadi huruf besar semua..
Perintah tersebut kita panggil terlebih dahulu didalam Controller nya, kita taruh didalam sebuah variable, baru nanti variable tersebut kita simpan ke dalam database..
Cara ini kurang efektif, kenapa? karena jika kita memiliki ratusan file controller yang perlu kita modifikasi dengan cara diatas, pasti akan sangat menyusahkan..
Nah dengan Mutator, kita hanya perlu melakukan modifikasi nya di file Model saja.. Selama model tersebut dipanggil, maka secara otomatis perintah strtoupper nya juga akan terpanggil..
Misalkan sebagai contoh, kita ingin menyimpan setiap nama siswa yang masuk kedalam database dengan huruf besar:
class User extends Model { /** * Set the user's first name. * * @param string $value * @return void */ public function setNamaAttribute($value) { $this->attributes['nama'] = strtoupper($value); } }
Untuk cara penulisan mutator adalah “set{Atribute}Attribute”..
Kalo pada accessors diawali dengan kata get, maka pada mutator diawali dengan kata set..
Yang mana nama atribut yang ada pada nama function/method nya harus sama dengan nama pada kolom table nya..
Dengan perintah diatas, maka apapun nilai yang masuk kedalam kolom nama, akan otomatis di konversi kedalam huruf besar semua nya..
Kalian coba saja lakukan query input data seperti berikut:
$data = new SangcahayaProfil; $data->nama = 'sangcahaya.id'; $data->alamat = 'Bekasi'; $data->save();
Kita cek query diatas, atribut nama kita isi dengan “sangcahaya.id”, huruf kecil semua..
Tapi kalo kita cek didalam table nya, data yang masuk adalah huruf besar semua..
Keren kan??
Support Us
Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid
Terima kasih..