摘要:model<?php namespace app\index\model; use think\Model; //使用软删除功能,必须先导入model/concern/SoftDelete.php use think\model\concern\SoftDelete; //一个trait方法集 class&nbs
model
<?php namespace app\index\model; use think\Model; //使用软删除功能,必须先导入model/concern/SoftDelete.php use think\model\concern\SoftDelete; //一个trait方法集 class Staff extends Model { use SoftDelete; //设置数据表名 protected $table = 'staff'; //设置主键 protected $pk = 'staff_id'; //设置删除时间字段,配合软删除功能 protected $deleteTime = 'delete_time'; //设置软删除字段的默认值 protected $defaultSoftDelete = 0; //获取器1: sex字段,仅限模型内部调用,不能是public protected function getSexAttr($value) { $sex = [0=>'男', 1=>'女']; return $sex[$value]; } //获取器2: 可传入所有字段的值,用来更加完整的描述用户字段信息 protected function getSalaryAttr($value, $data) { return $data['name'].'的工资是:'.($value+200); //生成用户订单是常用 } //获取器3: 可以为表中不存在的字段设置获取器方法,纯粹拼装字段内容 protected function getStaffInfoAttr($value, $data) { //其实$value此时仅是一个占位符,可任意命名,无任何意义 return '我是'.$data['name'].'今年都.'.$data['age'].'岁了,工资才'.$data['salary'].',好可怜呀~~'; } //修改器1:将入职时间自动转为时间戳存储 protected function setEntryTimeAttr($value) { return strtotime($value); } //修改器2:也支持传入第二个参数,引用其它字段的值 protected function setSalaryAttr($value, $data) { //salary字段存入表中时,自动加上员工的年龄,纯粹演示,无实际意义 return $value+$data['age']; } //开启当前模型的自动时间戳功能 protected $autoWriteTimestamp = true; //设置支持自动时间戳功能的字段名 protected $createTime = 'create_time'; protected $updateTime = 'update_time'; //类型转换 protected $type = [ 'staff_id' => 'integer', 'sex' => 'integer', 'age' => 'interger', 'salary' => 'interger', ]; //自动完成 protected $insert = ['sex' => 0,'salary'=> 1000]; //新增时 protected $update = ['sex'=> 0]; // protected $auto = ['sex'=>0]; } //controller--获取器,修改器,自动完成 <?php namespace app\index\controller; use think\Controller; use app\index\model\Staff; class ModelEdu extends Controller { //获取器 public function gain() { $res = Staff::get(2); //实例并初始化Staff模型 \var_dump($res); //查看所有字段信息 echo $res->sex, '<br>'; //查看经过修改器处理后的性别字段 echo $res->getData('sex'), '<br>'; //查看原始字段值 echo $res->salary, '<br>'; ////查看经过修改器处理后的工资字段(为了保密加了200,非真实工资) echo $res->staff_info, '<br>'; //查看一个不存在的字段信息,体验获取器的强大之处 } //修改器: 先给staff表新增一个字段entry_time: 入职时间 public function modify() { $res = Staff::get(3); $res->entry_time = '2015-05-22'; // $res->save(); $res = Staff::get(3); $res->salary = 7800; $res->save(); return '修改成功'; } //自动完成: public function auto() { // Staff::create(['name'=>'灭绝师太','age'=>59]); Staff::update(['name'=>'咩咩','age'=>18],['staff_id'=>15]); } } //验证器类 <?php namespace app\validate; use think\Validate; class Staff extends Validate { //验证规则 protected $rule = [ 'name'=>'require|min:5|max:15', 'sex' => 'in:0,1', 'age' => 'require|between:18,60', 'salary' => 'require|gt: 1500' ]; 错误信息可以自定义: protected $message = [ 'name.require' => '员工姓名不能为空', 'name.min' => '姓名不能少于5个字符', 'name.max' => '姓名不能大于15个字符', 'sex.in' => '性别只能选择男或女', 'age.require' => '年龄必须输入', 'age.between' => '年龄必须在18到60周岁之间', 'salary.require' => '工资必须输入', 'salary.gt' => '工资必须大于1500元' ]; } //验证器controller <?php namespace app\index\controller; use think\Controller; use app\validate\Staff; //导入验证器 use think\Validate; class Verify extends Controller { //验证器: 直接实例化验证器完成验证 public function demo1() { //准备要验证的数据 // $data = [ // // 'name'=>'zhu', // 'name'=>'zhulaoshi', // 'sex' => 1, // 'age' => 15, // 'salary' => 1200 // ]; $data = [ 'name'=>'zhulaoshi', 'sex' => 0, 'age' => 26, 'salary' => 7200 ]; $validate = new Staff(); if (!$validate->check($data)) { dump($validate->getError()); } else { return '验证通过'; } } //验证器: 使用控制器内容的验证对象来完成验证: $this->validate($data, $rule) public function demo2() { //准备要验证的数据 $data = [ // 'name'=>'zhu', 'name'=>'zhulaoshi', 'sex' => 0, 'age' => 2225, 'salary' => 1600 ]; $rule = 'app\validate\Staff'; $rule = [ 'age' => 'between:10,50', ]; $message = [ 'age.between' => '年龄必须在10到50之间' ]; $data = ['age'=>8]; // $res = $this->validate($data,$rule); $res = $this->validate($data,$rule,$message); if (true !== $res) { //验证成功返回true,否则返回错误信息 return $res; } return '验证成功'; } //独立验证: 直接实例化think\Validate.php进行验证 public function demo3() { //主要是通过Validate::make()和check()进行验证 //make($rule,$mess):创建验证规则与错误信息 //check($data)完成数据验证 //1.创建验证规则 $rule = [ 'age' => 'require|between:20,60' ]; //2.创建错误信息 $mess = [ 'age.require' => '年龄必须填写', 'age.between' => '年龄必须在20到60之间' ]; //3.创建验证数据 $data = ['age' => 13]; //初始化验证器类,并返回验证器实例 $validate = Validate::make($rule, $mess); $res = $validate->check($data); return $res ? '验证通过' : $validate->getError(); } }
批改老师:韦小宝批改时间:2018-12-24 11:47:44
老师总结:写的很不错哦!熟悉了这些功能后,在后面的项目中也可以进行使用哦!