一般需要對現有屬性格式化,我會選擇加一個追加屬性,宣告屬性
protected $appends = [
'phone_hide', 'sex_name'
];
訪問器
public function getSexNameAttribute()
{
switch ($this->sex) {
case 1:
$sexName = '男';
break;
case 2:
$sexName = '女';
break;
default:
$sexName = '未設定';
break;
}
return $sexName;
}
使用
$user = User::find(1);
$user->sex_name;
現在遇到個情況,就是要在本次執行中修改sex_name的格式化規則
最簡單的就是
$user = User::find(1);
$user->sex_name = '男士'; // 直接設定屬性值,但是這樣沒有效果
變通方式是
public function getSexNameAttribute()
{
// 根據
if (array_key_exists('is_format_sex', $this->attributes) && $this->attributes['is_format_sex']) {
switch ($this->sex) {
case 1:
$sexName = '先生';
break;
case 2:
$sexName = '女士';
break;
default:
$sexName = '另類';
break;
}
return $sexName;
}
switch ($this->sex) {
case 1:
$sexName = '男';
break;
case 2:
$sexName = '女';
break;
default:
$sexName = '未設定';
break;
}
return $sexName;
}
使用,在需要的地方設定is_format_sex值
$user = User::find(1);
$user->is_format_sex = true;
$user->sex_name; // 取值,達到的就是格式化的值
本作品採用《CC 協議》,轉載必須註明作者和本文連結