1. 访问器:就是在获取数据列表时,拦截属性并对属性进行修改的过程;
2. 比如,我们在输出性别时,在性别左右加上括号,或给邮件转换为大写;
//访问器,前固定 get,后固定 Attribute,Gender 是字段名
//参数$value 是源字段值,可修改返回
public function getGenderAttribute($value)
{
return '【 '.$value. '】 ';
}
PS:如果字段名是两个单词中间是下划线:user_name,那么方法名:getUserNameAttribute()
3. 我们也可以创建一个虚拟字段,用已有的数据字段进行整合,不过要进行数据追加;
//将虚拟字段追加到数据对象列表里去
protected $appends = [ 'info '];
//创建一个虚拟字段
public function getInfoAttribute()
{
return $this->username. '- '.$this->gender;
}
PS:注意,如果 gender 之前已经有访问器修改过,上面的方法会得到修改过的结果; PS:如果要使用源字段进行创建虚拟字段,需要使用下面这种:
return $this->attributes[ 'username ']. '- '.$this->attributes[ 'gender '];
二.修改器
1. 修改器,相对于访问器,是在写入的时候拦截,进行修改再写入;
//修改器,写入数据时,将邮箱转换为大写
public function setEmailAttribute($value)
{
$this->attributes[ 'email '] = strtoupper($value);
}
2. 可以添加默认的日期列,默认 created_at 和 updated_at;
//设置可以自动写入日期的列
protected $dates = [
'details '
];
3. 可以设置字段输出的类型,比如设置一个布尔型,输出时就是true和 false;
//设置字段类型
protected $casts = [
'details ' => 'boolean '
];