thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

一、总结

记得看下面

1、获取器的作用是在获取数据的字段值后自动进行处理

2、修改器的作用是可以在数据赋值的时候自动进行转换处理

3、获取器应用:我们在数据库存性别的时候不能存男女,而可以存0(未知)1(男)2(女),这样快,获取器就是我在控制器中通过$user->toArray()从模型获取数据的时候,自动调用模型中的getSexAttr()方法,从而返回的结果里面直接是男女,而不是012

4、模型中的方法是自动调用的,所以函数的命名规则是一一对应的,控制器数据表中自动sex,模型中函数getSexAttr(),如果字段 user_status 修改器名字getUserStatusAttr

5、修改器应用:修改密码的时候,自动md5加密

6、控制器和修改器都有特定的触发方法,修改器(save可以,update不可以),控制器(看下面案例)

二、thinkphp模型中的获取器和修改器

2、获取器

1、数据模型

// sex 的获取器

public function getSexAttr($val){

switch ($val) {

case '0':

return "未知";

break;

case "1":

return "男";

break;

case "2":

return "女";

break;

}

}

2、控制器

// 获取ID为15 的数据

$user=User::get(17);

// 经过获取器的操作

dump($user->toArray());

dump($user->sex);

// 不经过获取器处理

dump($user->getData());

3、注意

1、如果字段 user_status 修改器名字getUserStatusAttr

2、如果字段 status 修改器名字getStatusAttr

3、修改器

1、数据模型

// 用户密码的修改器

public function setPassAttr($val){

return md5($val);

}

2、控制器

// 修改 ID 为15 的密码

$user=new User();

// 密码会实现自动加密

$res=$user->save(['pass'=>'456'],['id'=>15]);

dump($res);

3、注意

1、修改器的触发条件是 save方法

thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)的更多相关文章

  1. Thinkphp5.0 的使用模型Model的获取器与修改器

    Thinkphp5.0 的使用模型Model的获取器.修改器.软删除 一.获取器 在model中使用 get+字段名+Attr,可以修改字段的返回值. 数据库中性别保存为,0未知.1男.2女,查询时返 ...

  2. Oracle中使用游标获取指定数据表的所有字段名对应的字符串

    操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...

  3. UV纹理+修改器:VertexWeightEdit+修改器:Mask遮罩

    UV纹理+修改器: VertexWeightEdit+修改器: Mask遮罩 基本流程, 如下图,准备地图一份, 黑白色即可. 纹理使用颜色绘制权重. 白色为1, 黑色为0. 新增球体, 细分多次, ...

  4. php手记之05-tp5获取器与修改器

    获取器 命名规范为: getFieldNameAttr 例如,我们需要对状态值进行转换,可以使用: <?php class User extends Model { public functio ...

  5. laravel 访问器 和修改器的使用

    对于访问器我是这样定义的,就是将数据库中的数据被访问时可以变成我们想要的数据类型(例如:数据库中的时间字段是int类型,要将她变成data(Y-m-d H:i:s),格式类型) 参看博客 https: ...

  6. Oracle修改表结构字段名和字段长度

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...

  7. IOS修改webView背景透明以及IOS调用前台js的方法

    工作上遇到IOS的webView中的H5页面需要透明以显示webView的背景颜色.用H5自身的透明度的css样式或者js控制背景颜色及透明度都打不到想要的效果,最后还是通过ios设置webView中 ...

  8. mysql中与 in 相反的语句 find_in_set('数据',字段名)

    在 mysql 中,我们经常用 in 来查询众多数据中是否有数据表字段中的值: 如果我们在数据表的字段中添加了很多值,然后查询某个值是否是这个字段中众多值的一个时可以用 find_in_set('数据 ...

  9. thinkphp读取器和修改器

    读取器 如果在模型中,自定义了方法,那么读取器会读取模型中自定义的方法,否则会调用默认的方法. 写入器

随机推荐

  1. Codeforces 472D

    看官方题解提供的是最小生成树,怎么也想不明确.you can guess and prove it! 看了好几个人的代码.感觉实现思路全都不一样,不得不佩服cf题目想法的多样性 以下说说我自己的理解, ...

  2. Activemq开启JMX及问题排查

    0.服务端开启JMX服务 一.修改${ ActiveMQ_HOME} /conf/activemq.xml文件 在<broker>标签中添加如下属性:useJMX="true&q ...

  3. userdel---删除用户及相关文件

    userdel命令   userdel命令用于删除给定的用户,以及与用户相关的文件.若不加选项,则仅删除用户帐号,而不删除相关文件. 语法 userdel(选项)(参数) 选项 -f:强制删除用户,即 ...

  4. 存储控制器和SDRAM 实验

    S3C2440 存储控制器(memory controller)提供了訪问外部设备所需的信号,这是一种通过总线形式来訪问扩展的外设. S3C2440  的存储器控制器有下面的特性: 支持小字节序.大字 ...

  5. C语言编程入门——程序练习(下)

    C语言的一些简单操作练习. 互换两个数字: # include <stdio.h> int main(void) { int i = 3; int j = 5; int t;   //将i ...

  6. java初探秘之推断输入的一串字符是否全为小写字母

    import java.io.IOException; import java.util.*; public class Two { public static void main(String[] ...

  7. 没有killall命令的解决方法

    没有killall命令的解决方法 -bash: killall: command not found https://www.byte128.com/archives/231.html 执行killa ...

  8. eclipse个人插件

    1.SVN eclipse markets 安装m2e-subversion.svnkit 2.maven 本地装好mvn prefences导入maven安装目录和配置 3.单元测试覆盖率 EclE ...

  9. inflater-布局转化实现

    通俗的说,inflate就相当于将一个xml中定义的布局找出来.因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件 ...

  10. Math的三个取整方法。

    Math类中提供了三个与取整有关的方法:ceil.floor.round,这些方法的作用与它们的英文名称的含义相对应 1.ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(1 ...