Ada sesiapa pernah guna mutators function dalam laravel?
Function mutators ni adalah satu fungsi untuk formatkan eloquent attribut ketika anda retrieve atau ketika anda setkan kepada model.
Biasanyanya ia dibuat pada class model seperti model user berikut
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * Get the user's first name. * * @param string $value * @return string */ public function getFirstNameAttribute($value) { return ucfirst($value); //return ufwords($value)) } public function setFirstNameAttribute($value) { $this->attributes['first_name'] = strtolower($value); } }
Ini menyebabkan apabila anda membuat panggilan dari mana-mana seperti controller atau view
$firstName = $user->first_name;
akan menyebabkan laravel menghantar atribut ke fungsi mutator getFirstNameAttribute() yang memaparkan atribut dengan huruf pertama kapital (Upper Caser). Cthnya jika nama “ghazali” akan keluar “Ghazali”.
Fungsi ini amat berguna bagi formasi data anda. Gunakan set jika anda mahu atttribute anda diubah sebelum disimpan dalam model, manakala gunakan get jika anda mahu ia kekal seperti yang user key in tetapi diubah hanya untuk paparan output sahaja.
Guna set, akan ubah data asal user mengikut format kita kemudian impan.
Guna get, tidak akan ubah data asal user. Data simpan sama seperti asal. Ubah ketika dipanggil untuk paparan sahaja.
Then ada sesiapa guna mutator pada package Sentinel?
Ok sesiapa yang guna package Sentinel mesti pening kat mana nak letak mutator ni? Korang kalau letak kat existing app\model mmg tak jadi ler. So sebenarnya korang kena kat sini
vendor/cartalyst/sentinel/src/Users/EloquetUser.php
Sentinel guna eloquent nya sendiri, sebab tu tak jadi guna cara diatas. So tambah je macam ni
public function getFirstNameAttribute($value) { return ucwords($value); } public function getLastNameAttribute($value) { return ucwords($value); }
So harap membantu ya!