abstract:一、获取器获取器1:sex,0=>男,1=>女public function getSexAttr($value) { $sex = [0=>'男',1=>'女']; return $sex[$value]; }获取器2:传入第二个参数,引用全部的字段值public fu
一、获取器
获取器1:sex,0=>男,1=>女
public function getSexAttr($value) { $sex = [0=>'男',1=>'女']; return $sex[$value]; }
获取器2:传入第二个参数,引用全部的字段值
public function getSalaryAttr($value,$data) { return $data['name'].'的工资是:'.$value; }
获取器3:可以为表中不存在的字段进行设置,纯粹地拼装字段内容
public function getStaffInfoAttr($value,$data) { return '我是'.$data['name'].'今年都'.$data['age'].'岁了,工资才'.$data['salary'].',好可怜呀'; }
动态获取器:从 V5.1.20+ 版本开始,可以支持对模型使用动态获取器,无需在模型类中定义获取器方法。
$res = Staff::withAttr('sex',function($value,$data){ $sex = [0=>'男',1=>'女']; return $sex[$value]; })->find(1); echo $res->sex;
二、修改器
修改器1:
public function setEntryTimeAttr($value) { return strtotime($value); }
修改器2:支持第二个参数,引用全部字段值
public function setSalaryAttr($value,$data) { return $value+$data['age']; }
三、类型转换
protected $type = [ 'staff_id'=>'interger', 'sex'=>'interger', 'age'=>'interger', 'salary'=>'interger' ];
四:自动完成
自定完成针对写操作:新增,更新,当于给字段设置默认值
protected $insert = ['sex'=>0,'salary'=>1000];//新增 protected $update = ['sex'=>0];//更新 protected $auto = ['age'=>30];//针对新增和更新
五、自动时间戳
//开启当前模型的自动时间戳功能 protected $autoWriteTimestamp = true; //设置用户自定义的新增和更新时间的字段名 protected $createTime = 'create_time'; protected $updateTime = 'update_time';
六、验证器
创建一个验证器类
<?php namespace app\validate; use think\Validate; class Staff extends Validate { //验证规则 protected $rule = [ 'name' => 'require|length:4,15', 'sex' => 'in:0,1', 'age' => 'require|between:18,60', 'salary' => 'require|gt:1500' ]; //自定义错误信息 protected $message = [ 'name.require' => '员工姓名不能为空', 'name.length' => '姓名必须在4到15个字符之间', 'sex.in' => '性别必须是男或女', 'age.require' =>'年龄不能为空', 'age.between' =>'年龄必须在18-60之间', 'salary.require'=>'工资必须输入', 'salary.gt' =>'工资必须大于1500' ]; }
调用验证器进行数据验证
public function demo1() { //准备要验证的数据 $data = [ 'name'=> 'zhulaoshi', 'sex'=> 0, 'age' => 30, 'salary'=>3000 ]; $validate = new Staff(); $validate->check($data); if(!$validate->check($data)){ dump($validate->getError()); }else{ return '验证通过'; } }
验证器的简化
public function demo2() { // 准备要验证的数据 $data = [ 'name'=> 'zhulaoshi', 'sex'=> 0, 'age' => 30, 'salary'=>3000 ]; // 准备验证规则 $rule = 'app\validate\Staff'; $res = $this->validate($data,$rule); if(true !== $res){ return $res; } return '验证成功'; }
public function demo2() { $data = ['age'=>5]; $rule = ['age'=>'between:10,50']; $mess = ['age.between'=>'年龄必须在10到50之间']; $res = $this->validate($data,$rule,$mess); if(true !== $res){ return $res; } return '验证成功'; }
七:独立验证
独立验证就是直接使用think\Validate类进行验证
//独立验证 public function demo3() { //1.创建验证规则 $rule = ['age'=>'require|between:20,60']; //2.创建错误信息 $mess = [ 'age.require'=>'年龄必须填写', 'age.between'=>'年龄必须在20到60之间' ]; //3.创建数据 $data = ['age'=>13]; $validate = \think\Validate::make($rule,$mess); $res = $validate->check($data); return $res ? '验证通过' : $validate->getError(); }
Correcting teacher:天蓬老师Correction time:2018-11-28 09:00:10
Teacher's summary:验证器,是所有框架都会提供的功能, tp中的验证器,目前功能还不是很完善,有些还是要结合正则完成,要留意