模型属性和验证器的小结

原创2019-02-25 15:29:55124
摘要:通过本章的学习,了解了模型中,获取器和修改器的创建和使用,设置日期格式自动转时间戳功能,新增时间和修改时间的默认字段绑定(可实现添加时间的自动更新和修改时间的自动更改),字段的类型转换,添加和删除时的字段自动完成功能。同时还学习了验证器,通过新增验证器类,可以实现对表单的数据进行验证和提醒。代码如下:app\model\User:<?php namespace app\model

通过本章的学习,了解了模型中,获取器和修改器的创建和使用,设置日期格式自动转时间戳功能,新增时间和修改时间的默认字段绑定(可实现添加时间的自动更新和修改时间的自动更改),字段的类型转换,添加和删除时的字段自动完成功能。同时还学习了验证器,通过新增验证器类,可以实现对表单的数据进行验证和提醒。代码如下:

app\model\User:

<?php

namespace app\model;

use think\Model;
use think\model\concern\SoftDelete;

class User extends Model
{
    //引用软删除的trait方法集
    use SoftDelete;

    //表名
    protected $table='user';

    //主键
    protected $pk='uid';

    //设置删除时间字段,供软删除使用
    protected $deleteTime='delete_time';

    //设置软删除默认值
    protected $defaultSoftDelete=0;

    //region  获取器
    //获取性别
    protected  function  getSexAttr($value,$data)
    {
        $sex=[0=>'男',1=>'女'];
        return '我叫:'.$data['name'].',我是'.$sex[$value].'生';
    }

    //获取自定义属性
    protected  function  getMsgAttr($value,$data)
    {
        return '本女'.$data['name'].',胸围'.$data['weight'];
    }
    //#endregion

    //region 修改器
    //自动转换日期格式成时间戳
    protected function setAddTimeAttr($value)
    {
        return strtotime($value);
    }

    //胸围更改时自动加1
    protected function setWeightAttr($value,$data)
    {
        return $value+1;
    }
    //endregion

    //开启当前模型的自动时间戳功能
    protected $autoWriteTimestamp = true;

    //设置支持自动时间戳功能的字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'modify_time';

    //类型转换
    protected $type=[
        'sex'=>'integer',
        'weight'=>'integer',
        'height'=>'integer',
    ];

    //自动完成
    protected $insert=['sex'=>1];
    protected $update=['sex'=>0];
    protected $auto=['height'=>'160'];
}

app\validate\User:

<?php

namespace app\validate;


use think\Validate;

class User extends Validate
{
    //验证规则
    protected $rule=[
        'name'=>'require|min:6|max:15',
        'sex'=>'in:0,1',
        'height'=>'between:145,190'
    ];

    //验证提示信息
    protected $message=[
        'name.require'=>'女星名字不可为空',
        'name.min'=>'女星名字长度最小为6个字符',
        'name.max'=>'女星名字长度最大为15个字符',
        'sex.in'=>'性别必须为男或女',
        'height.between'=>'身高必须在145-190cm之间'
    ];


}

app\index\controller\UserAttr.php:

<?php


namespace app\index\controller;

use app\model\User;
use think\Controller;
use app\validate\User as UserValidate;

class UserAttr extends  Controller
{
    public  function  getAttr()
    {
        //获取用户信息
        $user=User::get(23);
        echo $user->sex;
        echo '<br>';
        echo $user->msg;

        //保存用户信息
        $user->weight=95;
        $user->save();

        //验证用户信息
        $data= [
            'name'=>'cang111',
            'height'=>'140',
            'sex'=>0
        ];

        $validate= new UserValidate();
        $validate->check($data);

        if(true !== $validate)
        {
            dump($validate->getError());
        }
        else
        {
            return '验证成功';
        }
    }
}

效果图:

QQ截图20190225152820.jpg

批改老师:韦小宝批改时间:2019-02-25 17:31:03
老师总结:写的很不错 这些方法都可以帮助我们更快的去完成项目

发布手记

热门词条