欢迎光临
我们一直在努力

关于最新版ThinkORM对于时间字段的调整

下面由thinkphp教程栏目给大家介绍关于最新版ThinkORM对于时间字段的调整,希望对需要的朋友有所帮助!

不少用户在升级6.0最新版本框架后出现了获取不到时间字段原始值的情况,这是因为think-orm库的一个最新调整导致的。

在最新的ThinkORM中,字段类型和时间字段的自动处理不再纳入获取器范畴,而是在查询到结果后的第一时间就进行了处理,避免以后每次调用数据的时候都要进行一次额外的检测和处理。而由于不再纳入获取器,所以导致无法获取这些字段的原始值,包括设置了类型转换的字段和自动时间处理字段。

时间字段的自动处理是框架提供的实现时间字段(包括create_time和update_time,支持自定义字段名)的自动写入和自动输出转换功能。

如果你需要获取时间字段的原始值,那么需要关闭自动时间字段处理功能,也就是设置autoWriteTimestamp属性为false,然后对时间字段自定义获取器接管时间字段的输出,并且记得一旦关闭自动时间字段处理,时间字段的数据写入必须手动写入。

如果你希望时间字段自动写入处理,但不希望进行自动格式化输出,可以设置dateFormat属性为false。如果在数据库配置文件中设置的话,应该如下设置:

// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp'  => true,
 
// 时间字段取出后的默认时间格式
'datetime_format' => false,

think-orm升级到最新版本已经修正上述问题,但注意获取原始数据最好是用getOrigin方法替代getData方法,如果你需要在定义的获取器方法中读取原始的时间字段数据,应该用$this->origin['create_time']而不是用 $data['create_time']或者$this->data['create_time']。

相关推荐:最新的10个thinkphp视频教程

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《关于最新版ThinkORM对于时间字段的调整》
文章链接:https://www.rsspt.com/571.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。