Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Eloquent Mutator dan Accessor di Laravel

by
Difficulty:BeginnerLength:ShortLanguages:

Indonesian (Bahasa Indonesia) translation by AaliyaA (you can also view the original English article)

Dalam artikel ini, kita akan pergi melalui mutators dan accessor ORM fasih dalam kerangka web Laravel. Setelah pengenalan, kita akan pergi melalui beberapa contoh untuk memahami konsep-konsep ini.

Dalam Laravel, mutators dan accessor memungkinkanmu untuk mengubah data sebelum disimpan ke dan diambil dari database. Secara khusus, mutator memungkinkanmu untuk mengubah data sebelum disimpan ke database. Di sisi lain, accessor memungkinkanmu untuk mengubah data setelah ia diambil dari database.

Pada kenyataannya, Laravel model adalah pusat tempat dimana anda dapat membuat metode mutator dan accessor. Dan tentu saja, menyenangkan untuk memiliki semua modifikasi anda di satu tempat daripada berserakan di tempat yang berbeda.

Membuat Accessor dan Mutator dalam Kelas Model

Seperti yang anda ketahui dengan konsep dasar mutator dan accessor sekarang, kita akan melanjutkan dan mengembangkan sebuah contoh nyata untuk menunjukkannya.

Saya berasumsi bahwa anda mengetahui model Eloquent di Laravel, dan kita akan menggunakan model Post sebagai titik awal dari contoh kita. Jika anda belum membuat model Post, mari gunakan perintah artisan untuk membuatnya.

Itu seharusnya menciptakan file model di app/Post.php seperti yang ditunjukkan di bawah ini.

Mari kita ganti isi file itu dengan yang berikut ini.

Karena kita telah menggunakan pilihan migrasi--, itu juga seharusnya membuat migrasi dengan database terkait. Hanya untuk berjaga-jaga anda secara tidak sadar, anda dapat menjalankan perintah berikut yang akan membuat sebuah tabel dalam database.

Untuk menjalankan contoh dalam artikel ini, anda perlu membuat kolom name dan published_at dalam tabel post. Lagi pula, kita tidak akan pergi ke rincian topik migrasi, sepertinya itu berada di luar lingkup artikel ini. Jadi kita akan kembali kepada metode yang kita tertarik di dalamnya.

Pertama, mari kita melalui metode mutator.

Seperti yang kita bahas sebelumnya, mutators digunakan untuk mengubah data sebelum disimpan ke database. Seperti yang Anda lihat, sintaks metode mutator adalah set{attribute-name}Attribute. Tentu saja, anda perlu mengganti {attribute-name} dengan nama atribut yang sebenarnya.

Metode setNameAttribute dipanggil sebelum nilai atribut name disimpan dalam database. Untuk menjaga hal-hal sederhana, kita hanya menggunakan fungsi strtolower yang mengubah judul postingan menjadi huruf kecil sebelum disimpan ke database.

Dengan cara ini, anda dapat membuat metode mutator pada semua kolom tabel. Selanjutnya, mari kita melalui metode accessor.

Jika mutators digunakan untuk mengubah data sebelum disimpan ke dalam sebuah database, metode accessor digunakan untuk mengubah data setelah ia diambil dari database. Sintaks metode accessor sama seperti mutator kecuali itu dimulai dengan mendapatkan kata kunci bukan kata kuncinya yang ditetapkan.

Mari kita melalui metode accessor getNameAttribute.

Metode getNameAttribute yang akan dipanggil setelah nilai atribut name diambil dari database. Dalam kasus kita, kita hanya menggunakan metode ucfirst untuk mengubah judul postingan.

Dan itulah cara anda seharusnya untuk menggunakan metode accessor dalam model anda. Sejauh ini, kita hanya membuat metode mutator dan accessor, dan akan kita uji di bagian mendatang.

Mutator dalam Aksi

Mari buat sebuah kontroler di app/Http/Controllers/MutatorController.php  jadi kita bisa menguji metode mutator yang telah kita buat pada bagian sebelumnya

Juga, anda perlu untuk membuat sebuah rute terkait di file routes/web.php  untuk mengaksesnya

Di dalam metode index, kita membuat postingan baru menggunakan model Post. Ini seharusnya menetapkan nilai dari nama kolom untuk post title yang telah kita pakai fungsi strtolower di metode mutator serNameAttribute 

Dare Mutator

Selain mutator yang telah kita bahas sebelumnya, model Eloquent menyediakan beberapa mutator khusus yang memungkinkan anda untuk mengubah data. Misalnya, model Eloquent di Laravel hadir dengan properti khusus $dates yang memungkinkan Anda mengonversi kolom yang dikehendaki secara otomatis ke sebuah sebuah Carbon date.

Pada awal artikel ini, kita telah membuat model Post, dan kode berikut adalah bagian dari class tersebut.

Seperti yang mungkin anda ketahui, Laravel selalu menciptakan dua field yang berkaitan dengan tanggal, created_at dan updated_at, dengan setiap migrasi database. Dan itu mengubah nilai tersebut menjadi sebuah contoh Carbon date.

Mari berasumsi bahwa anda memiliki sepasang field di sebuah tabel yang anda anggap sebagai date fields. Dalam hal ini, anda hanya perlu untuk menambahkan nama kolom di array $dates

Seperti yang anda lihat pada kode di atas, kita telah menambahkan published_at di kolom array $dates, dan memastikan nilai dari kolom akan dikonversi ke sebuah contoh Carbon date

Accessor dalam Aksi

Untuk melihat accessor sedang beraksi, mari kita lanjutkan dan membuat sebuah file kontroler app/Http/Controllers/AccessorController.php dengan isi berikut

Juga, mari kita buat sebuah rute yang terkait di file routes/web.php untuk mengaksesnya

Dalam metode index, kita telah menggunakan model Post untuk memuat sebuah contoh post di tempat pertama.

Selanjutnya, kita memeriksa nilai kolom nama, dan itu harus dimulai dengan huruf besar karena kita telah menentukan metode accessor getNameAttribute untuk kolom itu.

Selanjutnya, kita telah memeriksa nilai kolom publish_at, dan itu harus dianggap sebagai tanggal. Karena itu, Laravel mengubahnya menjadi contoh Carbon sehingga anda dapat menggunakan semua metode utilitas yang disediakan oleh library itu. Dalam kasus kita, kita telah menggunakan metode getTimestamp untuk mengubah tanggal menjadi stempel waktu.

Dan itu membawa kita ke akhir artikel ini!

Kesimpulan

Hari ini, kita telah mengeksplorasi konsep mutator dan accessor ORM Eloquent di Laravel. Ini memberikan cara yang bagus untuk mengubah data sebelum disimpan dan diambil dari database.

Bagi anda yang baru saja memulai dengan Laravel atau ingin memperluas pengetahuan, situs, atau aplikasi dengan ekstensi, kami memiliki berbagai hal yang dapat anda pelajari di Envato Market.

Jangan ragu untuk berbagi pemikiran menggunakan feed di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.