thinkPHP5模型中修改器和自动完成的示例分析

  介绍

这篇文章主要介绍了thinkPHP5模型中修改器和自动完成的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

一、修改器

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

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

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

创建用户表

CREATE  TABLE “tp_user”, (   “id”才能,int (10), unsigned  NOT  NULL  AUTO_INCREMENT,   “用户名”,才能varchar (60), NOT  NULL  DEFAULT  & # 39; & # 39;   “密码”,才能char (32), NOT  NULL  DEFAULT  & # 39; & # 39;   “移动”,才能varchar (15), NOT  NULL  DEFAULT  & # 39; & # 39;, COMMENT  & # 39;用户手机号& # 39;,   “电子邮件”,才能varchar (100), NOT  NULL  DEFAULT  & # 39; & # 39;   “性”,才能非常小的整数(3),NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;性别,0未知,1男,2女& # 39;   “年龄”,才能非常小的整数(3),unsigned  NOT  NULL  DEFAULT  & # 39; 0 & # 39;   “时间”才能,int (10), NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;时间& # 39;,   create_time的才能,int (10), NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;创建时间& # 39;,   update_time的才能,int (10), NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;更新时间& # 39;,   “地位”,才能非常小的整数(3),NOT  NULL  DEFAULT  & # 39; 1 & # 39;, COMMENT  & # 39;记录状态,1删除,0禁用,1正常& # 39;,   PRIMARY 才能;KEY  (id)   ),引擎=MyISAM  AUTO_INCREMENT=12, DEFAULT  CHARSET=use utf8;

模型中添加密码修改器:

namespace 应用\ \指数模型;   use 认为\模式;   {class  User  extends 模型   ,,,//密码的修改器   ,,,public  function  setPasswordAttr (val美元){   ,,,,,,,//此处做一些对用户传入值的处理   ,,,,,,,return  md5 (val);   ,,,}   }

控制器中添加用户数据:

namespace 应用\指数\控制器;   use 认为\控制器;   use 应用\指数\ \用户模型;   {class  Index  extends 控制器   ,,,public  function 指数(){   ,,,,,,,//模拟传入的职位表单数据   ,,,,,,,data 美元;=,(   ,,,,,,,,,,,& # 39;用户名# 39;,=祝辞,& # 39;Emrys& # 39;   ,,,,,,,,,,,& # 39;密码# 39;,=祝辞,& # 39;emrys& # 39;   ,,,,,,,,,,,& # 39;电子邮件,,=祝辞,& # 39;emrys126.com& # 39;   ,,,,,,,,,,,& # 39;移动# 39;,=祝辞,& # 39;13955555555 & # 39;   ,,,,,,,,,,,& # 39;性与# 39;,=祝辞,1,   ,,,,,,,,,,,& # 39;年龄# 39;,=在18   ,,,,,,,);      ,,,,,,,//添加用户数据   ,,,,,,,res 美元;=,用户:创建(元数据);   ,,,,,,,转储(res);   ,,,}   }

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

 thinkPHP5模型中修改器和自动完成的示例分析

二、自动完成

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

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

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

namespace 应用\ \指数模型;   use 认为\模式;   {class  User  extends 模型//自动完成,插入和更新时都自动执行   protected  auto 美元;=,(   & # 39;时间# 39;   ];//只在插入时完成   protected  insert 美元;=,(   & # 39;create_time& # 39;   ];//只在数据更新时完成   protected  update 美元;=,(   & # 39;update_time& # 39;   ];//获取器   public  function  getSexAttr (val美元){   switch  (val美元),{   case  & # 39; 1 & # 39;   return  & # 39;男& # 39;;   打破;   case  & # 39; 2 & # 39;:   return  & # 39;女& # 39;;   打破;   默认值:   return  & # 39;保密& # 39;;   打破;   }   }//密码的修改器   public  function  setPasswordAttr (val美元){   return  md5 (val美元);   }//时间修改器   public  function  setTimeAttr () {   return 时间();   }//创建时间修改器   public  function  setCreateTimeAttr () {   return 时间();   }//更新时间修改器   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

thinkPHP5模型中修改器和自动完成的示例分析