看了下这章内容,感觉写个实例更让人容易理解
定义一个访问器 getFooAttribute
假设我们的
User.php
模型里面对应的表是users
表,里面有name
字段。
我们要实现每次直接访问name
属性时,可以将名字的首字母转换成大写
语法就是在User.php里面添加一个 “get属性Attribute” 函数
<?php
namespace App;
class User extends Authenticatable
{
public function getNameAttribute($value) // 如果是age,则 getAgeAttribute
{
return ucfirst($value);
}
}
我们在控制器里面运行
$user = User::find(1);
return $user->name;
则可以看到id=1的用户信息里面,用户名的首字母转换成了大写 Lisi
定义一个修改器setFooAttribute
原理跟访问器是一样的.比如,我们用户
id=1
的信息里面,name=lisi
。我们要把姓名改成张三
语法就是在User.php里面添加一个 “set属性Attribute” 函数
<?php
namespace App;
class User extends Authenticatable
{
public function setNameAttribute($value)
{
$this->attributes['name'] = ucfirst($value);
}
}
在控制器里面
$user = User::find(1);
$user->name = 'zhangsan';
dd($user); 打印结果如下