• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 详解thinkPHP5模型中的修改器和自动完成

详解thinkPHP5模型中的修改器和自动完成

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了thinkPHP5模型,修改器,自动完成等相关知识,希望对您有所帮助

一、修改器

实际开发过程中,一些字段在存储到表中时需要做些修改,如用户注册时填写的密码在表中存储时需要加密,修改器因此产生。

修改器同获取器类似,需要写在模型中,其命名规则为set + 字段名(按驼峰法) + Attr。

实例:添加用户时,用户的密码需要加密

创建用户表

CREATE TABLE `tp_user` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `username` varchar(60) NOT NULL DEFAULT '',  `password` char(32) NOT NULL DEFAULT '',  `mobile` varchar(15) NOT NULL DEFAULT '' COMMENT '用户手机号',  `email` varchar(100) NOT NULL DEFAULT '',  `sex` tinyint(3) NOT NULL DEFAULT '0' COMMENT '性别 0未知 1男 2女',  `age` tinyint(3) unsigned NOT NULL DEFAULT '0',  `time` int(10) NOT NULL DEFAULT '0' COMMENT '时间',  `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间',  `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间',  `status` tinyint(3) NOT NULL DEFAULT '1' COMMENT '记录状态 -1删除 0禁用 1正常',  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

模型中添加密码修改器:

namespace app\index\model;use think\Model;class User extends Model{    //密码的修改器    public function setPasswordAttr($val){        //此处做一些对用户传入值的处理        return md5($val);    }}

控制器中添加用户数据:

namespace app\index\controller;use think\Controller;use app\index\model\User;class Index extends Controller{    public function index(){        //模拟传入的post表单数据        $data = [            'username' => 'Emrys',            'password' => 'emrys',            'email' => 'emrys126.com',            'mobile' => '13955555555',            'sex' => 1,            'age' => 18        ];                 //添加用户数据        $res = User::create($data);        dump($res);    }}

运行后数据库多了记录,密码字段是经过密码修改器改变后的值。


6024c2b248046.jpg


二、自动完成

实际开发中创建的表字段基本都存在需要自动完成的字段,如记录创建时间、更新时间、创建人id(登录用户的id)等,这时就需要用到表的自动完成功能。自动完成包括插入和更新时都自动完成、插入时自动完成、更新时自动完成三种,其设置是在模型中使用

//插入和更新时均自动完成的字段protected $auto = []; //只在插入时自动完成的字段protected $insert = []; //只在更新时自动完成的字段protected $update = [];

现设置time字段在插入和更新时均自动完成、create_time字段在插入时自动完成、update_time字段在更新时自动完成。自动完成设置如下:

namespace app\index\model;use think\Model;class User extends Model{    //自动完成,插入和更新时都自动执行    protected $auto = [        'time'    ];         //只在插入时完成    protected $insert = [        'create_time'    ];        //只在数据更新时完成    protected $update = [        'update_time'    ];         //获取器    public function getSexAttr($val){        switch ($val) {            case '1':                return '男';                break;            case '2':                return '女';                break;            default:                return '保密';                break;        }    }         //密码的修改器    public function setPasswordAttr($val){        return md5($val);    }         //时间修改器    public function setTimeAttr(){        return time();    }        //创建时间修改器    public function setCreateTimeAttr(){        return time();    }         //更新时间修改器    public function setUpdateTimeAttr(){        return time();    }}

控制器中添加数据、更新数据完成测试

namespace app\index\controller;use think\Controller;use app\index\model\User;class Index extends Controller{    public function index(){        //模拟传入的post表单数据        $data = [            'username'&nbs
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解thinkPHP5模型中的修改器和自动完成

相关文章

  • 详解PHP中__construct()构造方法
  • 详解Composer+Git怎么创建 “服务类库”
  • php如何替换img中src内容
  • 讲解Laravel8.5是如何添加验证码mews/captcha的
  • 代码如何实现移除WordPress版本号
  • 浅析微信小程序中自定义组件的方法
  • Photoshop制作超强科技感立体艺术字
  • 详解Angular中的NgModule(模块)
  • 聊聊Node.js + worker_threads如何实现多线程?(详解)
  • array_values()在php中返回数组的操作实例

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 一分钟解读js与PHP 设置cookie的相互读取(附代码)
    • 解决宝塔面板安装Let's Encrypt SSL证书后网站无法访问
    • 完全掌握thinkphp的事件绑定、监听和订阅
    • PhotoShop简单制作蓝色洁净星星文字效果教程
    • 浅谈Nodejs中的callback回调
    • Composer安装时要求输入授权用户名密码是怎么回事
    • #1045 无法登录 MySQL 服务器的解决方法
    • 4种移动端适配方法
    • 让dedecms友情链接也支持limit
    • css中实现背景透明的三种方式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有