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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM