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

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

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

例如:getBirthdayAttr;

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

<?php
    namespace app\index\model;
    use think\Model;
    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 app\index\model;
    use think\Model;
    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();
        }
    }

TP5模型修改器和读取器相关推荐

  1. onnx文件及其结构、正确导出onnx、onnx读取、onnx创建、onnx修改、onnx解析器

    一.onnx基本概念 1.ONNX的本质,是一种Protobuf格式文件,ONNX文件其实就是Protobuf序列化过后储存的东西.其定义是protobuf语法,语法类似json. 2.Protobu ...

  2. 图片读取器和皮肤库设计

    图片读取器和皮肤库设计 无论是图片读取器还是皮肤库设计,其实只是点到为止,没有深入做出很好的视觉效果,请见谅. 一.实验目的 1.结合实例,熟练分析并绘制UML类图: 2.熟练使用java实现两种常见 ...

  3. angular过滤字符_如何使用Angular和Azure计算机视觉创建光学字符读取器

    angular过滤字符 介绍 (Introduction) In this article, we will create an optical character recognition (OCR) ...

  4. 模型-视图-提供器 模式

    原文:http://www.tracefact.net/Software-design/Model-View-Presenter-Pattern.aspx 出处:http://msdn.microso ...

  5. [译]模型-视图-提供器 模式

    模型-视图-提供器 模式 出处:http://msdn.microsoft.com/en-us/magazine/cc188690.aspx 引言 随着像Asp.Net和Windows窗体这样的用户界 ...

  6. 对报表模型项应用安全筛选器

    "安全登录名"和"安全用户"的区别: "安全登录名"是在通过以下方式添加:<服务器名称> -->安全性-->登录名, ...

  7. MonsoonRF推出新型RFID读取器,安装难度和换灯泡差不多

    安装RFID基础设施所需的成本和时间是RFID部署的障碍之一.一些企业希望在特定范围内试用一个系统从而测试标签读取的能力并判断这些数据的作用.它们需要先安装RFID读取器并将其连接到电缆,天线,以太网 ...

  8. 传奇登录器自动获取服务器,gom引擎配置登录器补丁读取规则的说明

    gom引擎配置登录器补丁读取规则的说明 补丁读取规则 功能:补丁读取规则 格式:Resources目录 说明:以读取Prguse.wil为例, 先读取Resources\Data\Prguse.pak ...

  9. 工业超高频读写器|读取器CK-UR12-E02使用POE交换机和博途软件如何与西门子PLC配置解决方案

    ProfiNet协议POE供电工业超高频读写器|读取器CK-UR12-E02是一款工业以太网通讯的超高频读写设备,带IO继电信号输入输出,广泛应用工业自动化生产领域 本文将以实际环境,介绍工业超高频读 ...

最新文章

  1. 技术的那些事儿_3_西方技术管理的精髓
  2. mysql error 1594_MySQL 1594 异常解决办法
  3. 非监督异常点检测算法总结——没有想到矩阵分解和编码解码器也是一种思路...
  4. python怎么网络通信_深入Python中的网络通信
  5. linux下创建文件没有权限,分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决...
  6. 剑指offer——最小的K个数和数组中第K大的元素
  7. 领域模型架构 eShopOnWeb项目分析 上
  8. oui unknown中的oui是什么?
  9. 计算机配置型号及主要技术指标,显卡性能看什么参数(新手必备的显卡性能知识全解)...
  10. 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线
  11. mongodb数据库调用
  12. MyBatis源码阅读(十二) --- Spring加载MyBatis过程
  13. 求邻接矩阵matlab,如何使用MATLAB绘制邻接矩阵
  14. 安徽庐江:副副春联送祝福 浓浓墨香迎新春
  15. Linux测试主机之间连通性和端口是否开放的方法
  16. 零基础入门python好学么
  17. 全球及中国雾化铜基粉末行业运营状况与发展动态分析报告2022-2028年
  18. uboot支持usb功能
  19. Java 开发在线客服系统源码,企业网站官网客服系统源码,网页版聊天咨询客服源码
  20. 计算机插u盘抖动,电脑插入U盘后发现读取速度不稳定如何解决

热门文章

  1. MySQL存个人信息可以吗_mysql数据库中,在修改数据时能否保存操作人员的信息,比如姓名或id,如果能,怎么操作。...
  2. springboot和vue data数据为空_常见数据结构的 Python 实现(建议收藏)
  3. 有一个计算机在桌子上用英语怎么写,什么在桌子上的英文怎么写
  4. python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...
  5. 将list集合中按照某个字段排序(从大到小),然后将list中的对象倒序
  6. 李守红java_SpringMVC基础及应用-李守红
  7. postgre非零相除等于0_LeetCode刷题实战29:两数相除
  8. 3dmax如何显示参考图_3dmax怎么在视图中放入参照
  9. 利用Python进行数据分析--绘图和可视化
  10. Machine Learning---感知器学习算法