1. 访问器
      1. 访问器:就是在获取数据列表时,拦截属性并对属性进行修改的过程:
      2. 比如,我们在输出性别时,在性别左右加上括号,或给邮件转换大写;

    //访问器,前固定get,后固定Attribute,Gender是字段名
    //参数$value是源字段值,可修改返回

    public function getGenderAttribute($value){// 访问器:性别:【男】 这东西也是真的牛逼在函数名字上就能解析
    return ‘【’.$value.’】’;
    }
    Ps: 如果字段名是两个单词中间是下划线:user_name, 那么方法名:getUserNameAttribute()
    c. 我们也可以创建一个虚拟字段,用已有的数据字段进行整合,不过要进行数据追加:
    //将虚拟字段追加到数据对象列表里面去,就可以直接在输出的数据表中看到
    protected $appends = [‘info’];
    //创建一个虚拟字段
    public function getInfoAttribute(){
    return $this->username.’-‘.$this->gender;
    }
    Ps: 注意,如果gender之前已经有访问器修改过,上面的方法会得到修改过的结果;
    Ps: 如果要使用源字段进行创建虚拟字段,需要使用下面这种方法替代上面的return $this->username.’-‘.$this->gender;
    return $this->attributes[‘username’].’-‘.$this->attributes[‘gender’];

    1. 修改器
      1. 修改器,相对于访问器,是在写入的时候拦截,进行修改再次写入:

    //修改器,写入数据时,将邮箱转换为大写,strtoupper()这个方法就是修改大小写,且这个方法只会修改创建时的
    public function setEmailAttribute($value){
    $this->attributes[‘email’] = strtoupper($value);
    }
    b. 可以添加默认的日期列,默认created_at 和 updated_at;
    //设置可以自动写入日期的列,他只是负责输出日期格式的数据,但不负责把你的那个字段改成日期属性,所以有些属性类型可能报错
    protected $dates = [‘details’];
    c. 可以设置字段输出的类型,比如设置一个布尔型,输出时就是true和false;
    //设置字段类型, 这里才是真正去设置属性的地方
    protected $casts = [
    ‘details’ => ‘boolean’
    ];