前言
当我们想在资料存进资料库前的最后一刻,或是取出资料库后的第一时间对资料做处理,可以在 Model 里写 Mutator 和 Accessor。 官网举一个加密解密的例子,蛮好理解他的作用的。
今天用一个大家都有的 User Model 做练习,将 name 全部转为小写后存进资料库,取出时,全部转成大写。很明显的,这个练习本身没什么意义XDD。开始 trytry 吧!
用法
User Model
加入下面两个 function:
public function setNameAttribute($value) // Mutator 存进资料库前作用{ $this->attributes['name'] = strtolower($value);}
public function getNameAttribute($value) // Accessor 从资料库取出后作用{ return $this->attributes['name'] = strtoupper($value);}
注意:function 的名称是依照栏位名称来命名,如 set+栏位名称(upper camel大写驼峰)+Attribute。 如果 栏位名称是 user_name 那 function 名称就要改成 setUserNameAttribute。
测试
新增一笔 user 资料name:ABCHAHA
password:sasawee查看资料库,确实转为小写

不论name输入的大小写为何,在进到资料库比对前都会转成小写,所以没关係。用 name 和 password 捞出 user后,将 name 转成大写再 return 出来。

感谢 Ray 大!