ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> ## 修改器:在数据赋值的时候自动进行转换处理(针对入库前) > 修改器只在执行模型的save方法的时候触发,如果是实例化模型对象然后调用data方法传入数据,那么必须加true参数,即data($data,true) 才能触发修改器 修改器方法的第二个参数会自动传入当前的所有数据数组,即save之前赋值的。 ### 定义一个修改器 ```php class User extends Model { public function setNameAttr($value) { return strtolower($value); } } // 利用修改器进行数据的拼装和序列化 class User extends Model { // data中是save之前赋值的数据 public function setNameAttr($value,$data) { return serialize($data); } } ``` ### 触发一个修改器的时机 ``` // 第一种:给模型对象的字段赋值 $user = new User(); $user->name = 'THINKPHP'; // 第二种:data方法加true参数 $user = new User(); $data['name'] = 'THINKPHP'; $data['email'] = 'thinkphp@qq.com'; $user->data($data, true); $user->save(); // 第三种:save方法触发 $user = new User(); $data['name'] = 'THINKPHP'; $data['email'] = 'thinkphp@qq.com'; $user->save($data); ```