zoukankan      html  css  js  c++  java
  • thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    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方法

  • 相关阅读:
    笔记本Linux系统,修改合盖不待机
    用Java8把List转为Map
    获取本地请求的真实IP地址
    PowerDesigner 把Comment复制到name中和把name复制到Comment
    axios封装http请求
    Fiddler代理配置
    第十九章 代码重用
    第十八章 字符串
    第十七章 特殊类成员
    第十六章 多态性
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9027120.html
Copyright © 2011-2022 走看看