Salah satu cara lain untuk membuat kode anda lebih clean dan mudah di maintain adalah dengan menggunakan Model Accessor pada Laravel. Model Accessor memungkinkan kita untuk memformat attribute ketika kita mendapatkan hasil dari query database. Selain memformat attribute, kita juga bisa membuat custom attribute dengan menggunakan Model Accessor pada Laravel.
Untuk lebih jelas mengenai Model Accessor pada Laravel, kita akan membuat contoh sederhana bagaimana implementasi model accessor ini. Misalnya, kita perlu untuk menampilkan nama lengkap user pada view, jika data nama pada database kosong / null, maka kita harus menampilkan username dari user tersebut pada view.
Dengan contoh kasus diatas, pada view kita akan memiliki kode kurang lebih seperti ini.
@if ($user->first_name) <h1>{{ $user->first_name }} {{ $user->last_name }}</h1> @else <h1>{{ $user->username }}</h1> @endif
Model Accessor
Dengan menggunakan Model Accessor, kita akan membuat kode pada view diatas terlihat lebih clean. Langkah pertama, kita harus mendefinisikan accessor pada model User. Model Accessor ditandai dengan nama method getFooAttribute
, dimana Foo
adalah nama kolom yang ingin anda akses dalam format Studly Case.
Contoh, kita akan menampilkan nama dari user sesuai dengan contoh kasus yang telah kita bahas sebelumnya.
class User extends Model { // public function getNameAttribute() { if (! $this->first_name) { return $this->username; } return trim($this->first_name . ' ' . $this->last_name); } // }
Kemudian, pada view kita hanya perlu menggunakan property name
sebagaimana kita mendeklarasakin name
pada Model Accessor.
<h1>{{ $user->name }}</h1>
Ada kemungkinan jika property name
dari User akan digunakan kembali pada halaman lain, tanpa menggunakan Model Accessor, berarti kita harus menulis ulang logika untuk menampilkan nama user pada setiap view. Dengan menggunakan Model Accessor, kita hanya perlu menuliskan semua logika untuk menampilkan data nama pada Model Accessor.
No Comments
Leave a comment Cancel