和获取器相反,那边是 get,这边就是 set。获取器获取数据的时候触发,修改器就是设置数据的时候触发

修改器方法的命名规范为:

setFieldNameAttr

定义了修改器之后会在下列情况下触发:

  1. 模型对象赋值;
  2. 调用模型的data方法,并且第二个参数传入true;
  3. 调用模型的save方法,并且传入数据;
  4. 显式调用模型的setAttr方法;
  5. 定义了该字段的自动完成;

1. 设置时:触发字段的装换

model 层 设置:

  1. <?php
  2. // 修改器
  3. public function setNameAttr($value)
  4. {
  5. return strtolower($value);
  6. }

service 层的方法:

  1. <?php
  2. // 新增一个用户 save
  3. public function addOneUser($user)
  4. {
  5. $model = new userModel();
  6. return ($model->save($user)) ? '增加成功' : '增加失败';
  7. }

controller 层调用service层:

  1. <?php
  2. // 添加一名用户的信息
  3. public function fun2(UserService $service)
  4. {
  5. $user = [
  6. 'name' => 'HELLO WORLD',
  7. 'gender' => 1,
  8. 'age:' => 24,
  9. 'email' => 'wangwu@gmail.com'
  10. ];
  11. return $service->addOneUser($user);
  12. }

postman 测试结果:
image.png

查看数据表:
image.png