zoukankan      html  css  js  c++  java
  • 【TP5学习笔记二】模型修改器和读取器

    (PS:文章内源码均来自官方文档)

    现在所有的项目都是会把时间存成时间戳格式,取出的时候还要转换

    这时候就可以应用到读取器这个功能。

    读取器的命名规则是:驼峰 ,get+字段名+Attr  

    例如:getBirthdayAttr;

    比如我要获取生日。那么可以如下操作:

    <?php
    namespace appindexmodel;
    use thinkModel;
    class User extends Model
    {
        // birthday读取器
        protected function getBirthdayAttr($birthday)
        {
            return date('Y-m-d', $birthday);
        }
    }

    这样我们获取到的生日就是“年-月-日”格式的:

    public function read($id='')
    {
        $user = UserModel::get($id);
        echo $user->nickname . '<br/>';
        echo $user->email . '<br/>';
        echo $user->birthday . '<br/>';
    }
    

     

    读取器还可以定义读取数据表中不存在的属性,例如把原始生日和转换的格式分开两个属性 birthday 和 user_birthday ,我们只需定义 user_birthday 属性的读取器方法:

    <?php
    namespace appindexmodel;
    use thinkModel;
    class User extends Model
    {
        // user_birthday读取器
        protected function getUserBirthdayAttr($value,$data)
        {
            return date('Y-m-d', $data['birthday']);
        }
    }    
    

      这时候我们直接在控制器中echo $data->user_birthday; 就可以输出Y-m-d格式的时间。

    修改器:
    由于很多时候我们在前端获取到的时间是字符串类型,而我们需要进行strtotime()处理,所以在插入数据库之前,我们通过修改器直接将数据格式转换成我们需要的。

    修改器方法的命名规范是:set + 属性名的驼峰命名+ Attr。

    我们在模型中添加:

    protected function setBirthdayAttr($value)
    {
        return strtotime($value);
    }
    

     在控制器中添加数据的时候:

    public function add()
    {
        $user = new UserModel;
        $user->nickname = '流年';
        $user->email = 'thinkphp@qq.com';
        $user->birthday = '1977-03-05';
        if ($user->save()) {
            return '用户[ ' . $user->nickname . ':' . $user->id . ' ]新增成功';
        } else {
            return $user->getError();
        }
    }    
    

      插入的数据birthday是时间戳格式的

  • 相关阅读:
    BZOJ3781 小B的询问
    BZOJ3757 苹果树
    BZOJ1491 [NOI2007]社交网络
    BZOJ3754 Tree之最小方差树
    BZOJ1251 序列终结者
    BZOJ2259 [Oibh]新型计算机
    BZOJ1043 [HAOI2008]下落的圆盘
    D. 预定义变量
    A. 变量命名原则
    B. PHP变量的特点
  • 原文地址:https://www.cnblogs.com/VanQ/p/7007336.html
Copyright © 2011-2022 走看看