模型详解及验证机制

Original 2018-12-26 14:50:54 257
abstract:<?phpnamespace app\index\model;use think\Model;use think\model\concern\SoftDelete;class User extends Model{ use SoftDelete;    //声明表名    protected $table = 'user'; 

<?php


namespace app\index\model;

use think\Model;

use think\model\concern\SoftDelete;

class User extends Model

{

use SoftDelete;

    //声明表名

    protected $table = 'user';


    //声明主键

    protected $pk = 'id';


    //声明删除时间的字段名

    protected $deleteTime = 'delete_time';


    //设置软删除字段的默认值

    protected $defaultSoftDelete = 0;


     //自动完成

    //模型的自动完成主要针对数据库写操作:新增和更新

    //相当于给字段设置默认值

    //仅针对新增

    protected $insert = [

    'sex' => 1,

    'score' => 60,

    'entry_time' => 0

    ];

    //仅针对更新

    protected $update = [

    'sex' => 1

    ];

    //针对新增和更新

    protected $auto = [

    'sex' => 1

    ];


    //自动时间戳

    protected $autoWirteTimestamp => true;


    //设置用户自定义的新增和更新时间的字段名

    protected $createTime = 'create_time';

    protected $updateTime = 'update_time';


    //获取器1:1是男 0是女

    protected function getSexAttr($value){

    $arr = ['女','男'];

    return $arr[$value];

    }


    // 获取器2:传入第二个参数,引用全部字段

    protected function getScoreAttr($value,$data)

    {

    return $data['name'].'的成绩是'.$value;

    }


    //获取器3:可以为表不存在的字段设置,纯粹的拼装字段内容

    protected function getAssessAttr($value,$data){

    //Assexx:虚拟字段

    $score = $data['score'];

    $result = '';

    if($score  < 60){

    $result = '不及格';

    }else if($score >60 && $score <85){

    $result = '良好';

    }else{

    $result = '优秀';

    }

    return $result;

    }

    //修改器

    protected function setEntryTimeAttr($value){

    $value = strtotime($value);

    return $value;

    }

    // 修改器2:支持第二个参数,引用全部字段值

    // protected function setScoreAttr($value,$data){

    // return $value+$data['id'];

    // }

    //类型转换

    protected $type = [

    'id' => 'integer',

    'sex' => 'integer',

    'score' => 'integer',

    ];

}

<?php

namespace app\index\controller;


use app\index\model\User as UserModel;

use think\Controller;


class Index extends Controller

{  

    //获取器一 

   public function index(){

    $res = UserModel::get(13);

    dump($res);

   }


   //获取器2

   public function index1(){

    $res = UserModel::get(13);

    echo $res->score;

   }


   //获取器三

   public function index2(){

    $res = UserModel::all();

    foreach($res as $item){

        echo $item['score'].'评价是:'.$item['assess'].'<br />';

    }

   }


   //修改器1

   public function modify(){

     $res = UserModel::get(13);

     $res->entry_time = '2018-12-26';

     $res->save();

   }


   //修改器2

   public function modify1(){

    $res = UserModel::get(13);

    $res->score = 50;

    $res->save();

   }


   //自动完成

   public function auto(){

    $data = [

        'name' => '诸葛',

    ];

    $res = UserModel::create($data);

    dump($res);

   }

   

}

<?php

namespace app\validate;


use think\Validate;


class User extends Validate

{

protected $rule = [

'name' => 'require',

'sex' =>'in:0,1',

'score' => 'require|egt:0|elt:100'

];



protected $message = [

'name.require' => '缺少必要参数:名字',

'sex.in' => '性别必须是男和女',

'score.require' => '成绩不能为空',

'score.egt' => '不能出现负成绩',

'score.elt' => '不能出现大于100的成绩'

];

}

<?php

namespace app\index\controller;


use think\Controller;

use app\validate\User as UserValidate;

use think\Validate;


class Verify extends Controller

{


// public function index(){

// $data = [

// 'name' => '张三',

// 'score' => 1065,

// ];


// $userV = new UserValidate();

// $res = $userV->check($data);

// if(!$res){

// dump($res);

// dump($userV -> getError());

// }else{

// dump($res);

// }

// }

// 

// public function index(){

// $data = [

// 'name' => '张三',

// 'score' => 1065,

// ];

// $rule = 'app\validate\User';

// $res = $this->validate($data,$rule);

// var_dump($res);

// }

// 

public function index(){

// 直接使用系统的验证器进行验证

// Validate::make()创建验证规则并返回验证对象

// $validate->check($data) 验证

$rule = [

'name' => 'require',

'sex' =>'in:0,1',

'score' => 'require|egt:0|elt:100'

];


$mess = [

'name.require' => '缺少必要参数:名字',

'sex.in' => '性别必须是男和女',

'score.require' => '成绩不能为空',

'score.egt' => '不能出现负成绩',

'score.elt' => '不能出现大于100的成绩'

];


$data = [

'name' => '张三',

'score' => 1065,

];


$validate = Validate::make($rule,$mess);

$res = $validate->check($data);

dump($res);

}

}


Correcting teacher:韦小宝Correction time:2018-12-26 14:56:39
Teacher's summary:写的很棒,框架中的验证可以快速的来协助我们完成功能!

Release Notes

Popular Entries