摘要:一、获取器获取器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();
}
批改老师:天蓬老师批改时间:2018-11-28 09:00:10
老师总结:验证器,是所有框架都会提供的功能, tp中的验证器,目前功能还不是很完善,有些还是要结合正则完成,要留意