模型自动操作与数据验证

原创 2018-11-04 20:01:58 360
摘要:总结:1.模型获取器。设置模型获取器方法(方法名必须为:get + 数据表字段名(首字母大写,若数据表字段包括下划线,去掉下划线,下划线后单次首字母也得大写) + Attr)模型获取器有三种用法:第二种方法额外$data数据,可以获取当前字段所有数据。第三种方法可以设置一个虚拟字段,为表不存在的字段设置纯粹的拼装的字段内容。2.模型修改器。设置模型修改器(设置模型获取器方法(方法名必须为:set

总结:

1.模型获取器。

设置模型获取器方法(方法名必须为:get + 数据表字段名(首字母大写,若数据表字段包括下划线,去掉下划线,下划线后单次首字母也得大写) + Attr)

模型获取器有三种用法:第二种方法额外$data数据,可以获取当前字段所有数据。第三种方法可以设置一个虚拟字段,为表不存在的字段设置纯粹的拼装的字段内容。

1.PNG

2.模型修改器。

设置模型修改器(设置模型获取器方法(方法名必须为:set + 数据表字段名(首字母大写,若数据表字段包括下划线,去掉下划线,下划线后单次首字母也得大写) + Attr))

模型获取器有两种用法:第二种方法额外$data数据,可以获取当前字段所有数据。2.PNG

3.模型类型转换和自动完成

在数据表中,字段值类型共有三种类型,字符类型,数值类型,时间类型,默认为字符类型,类型转换可以将字符类型转换为其他类型(默认为字符类型)。自动完成,针对写操作和新增,更新操作相对于设置字段的默认值),$inset对应新增操作,$update对应更新操作,$auto则新增和更新操作都会触发。

3.PNG

4.模型自动时间戳功能

模型自动时间戳功能可以在数据的写,更新操作时自动完成时间戳的写入。可以在全局设置config中的database.php中开启时间戳,也可以在模型中自定义设置,先需数据表中设置对应字段,如‘create_time’'update_time'。

4.PNG

5.验证器技术。

验证器可以对用户传递的数据进行自定义规则的数据验证,可以通过自定义创建验证类(继承think中的Validate类)进行自定义规则和错误信息的设置。(验证器模式),并可以调用validate方法进行简化方法,也可以通过调用验证类,进行独立验证。

5.PNG

验证器代码=======================================

<?php

namespace app\index\controller;

use think\Controller;

use app\validate\Point;

use think\Validate;

class Verify extends Controller

{

    //验证器

    public function demo(Point $validate){//依赖注入

    //模拟数据

    $data=[

       'biketype'=>1,

           'bikeid'=>23,

           'userid'=>22

    ];

        if(!$validate->check($data)){

        dump($validate->getError());

        }

        else{

        return '验证成功';

        }

    }


    //验证器的简化 $this->validate($data,$rule,$message)利用controller类封装的方法

    public function demo1(){

        //模拟数据

        $data=[

           'biketype'=>3,

           'bikeid'=>23,

           'userid'=>22

        ];

        //验证规则

        $rule = 'app\validate\Point';


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


        if (true !== $res) {

            return $res;

        }

        else{

            return '验证成功';

        }

    }


    //独立验证,调用验证类

public function demo2(){

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

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

                //模拟数据

        $data=[

           'biketype'=>2,

           'bikeid'=>23,

           'userid'=>22

        ];

        //验证规则

        $rule=[

       'bikeid' => 'require|length:1,11',

       'userid' => 'require|length:1,11',

       'biketype' =>'require|in:1,2'

    ];

    //错误信息

        $mess=[

       'bikeid.require'=>'单车ID不能为空',

       'userid.require'=>'用户ID不能为空',

       'biketype.require'=>'单车类型不能为空',

       'biketype.in'=>'单车类型只能为1或2'

    ];


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

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

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

        if ($res) {

             return '验证成功';

        }

        else{

            return $validate->getError();

        }

    }

}

?>


批改老师:天蓬老师批改时间:2018-11-04 20:33:37
老师总结:你的版本是5.1吗?如果是,验证类应该是Facade引入 还有,设置器必须要有$auto或者$insert/$update属性配对使用,属性中没必要设置默认值了,因为你有设置器方法啦 不过,整体来说,

发布手记

热门词条