简介
当在模型实例中获取或者设置某些属性值的时候,访问器和修改器允许对属性值进行格式化。
访问器和修改器区别
访问器 是在访问属性时修改的,是临时性的;
修改器 是写入数据库前修改的,是数据持久化的。
1.定义访问器
如User模型中含有 name 属性,注意命名规范是 get{属性的驼峰式命名}Attribute1
2
3
4
5
6
7
8
9
10
11
12
13class User extends Model
{
/**
* 获取用户的名字。
*
* @param string $value
* @return string
*/
public function getNameAttribute($value)
{
return $value;
}
}
2.定义修改器
命名规范是 set{属性的驼峰式命名}Attribute, 比如要对密码进行加密:1
2
3
4
5
6
7
8
9
10class User extends Authenticatable
{
public function setPasswordAttribute($value)
{
if (strlen($value) != 60) {
$value = bcrypt($value);
}
$this->attributes['password'] = $value;
}
}