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. 深入理解 GRE tunnel

    深入理解 GRE tunnel 时间 2012-11-08 19:05:22  A Geek's Page 原文  http://wangcong.org/blog/archives/2149 主题  ...

  2. elasticsearch index之Translog

    跟大多数分布式系统一样,es也通过临时写入写操作来保证数据安全.因为lucene索引过程中,数据会首先据缓存在内存中直到达到一个量(文档数或是占用空间大小)才会写入到磁盘.这就会带来一个风险,如果在写 ...

  3. git 回滚到任意版本

    git回滚到任意版本 1.先显示提交的log $ git log -3 commit 4dc08bb8996a6ee02f Author: Mark <xxx@xx.com> Date: ...

  4. jquery实现瀑布流效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Oracle定义变量、常量

    1 定义变量 declare var_countryname varchar2(50):='中国'; 2 定义常量 con_day constant integer:=365;

  6. nexus 搭建maven私服

    1. nexus 下载地址 https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.4-03-bundle.tar.g ...

  7. 地道的 Python(二)

    作者: Zhang Yang 列表推导 上文介绍了一个高逼格的创建字典的方法.那列表呢?依据蛋痛定律,它也一定有,可是它被起了一个很蛋痛的名字,叫列表推导: 先看看这种代码: li = [] for ...

  8. ArcGIS Api For Flex 动态画点和线

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  9. 推断一个java文件和邮箱格式是否合法

    import java.util.Scanner; public class StringTest { public static void main(String[] args) { int bac ...

  10. 欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国

    欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国 前几天开了个欧洲的VPS,当备用的,没怎么用.就这样的VPS在1天之内也收到不少来自中国网民的见面礼 用了别人的一条命令: gre ...