修改追加属性的值
一般需要对现有属性格式化,我会选择加一个追加属性,声明属性
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 协议》,转载必须注明作者和本文链接