2021/7/28 关于thinkPHP模型中的自动写入时间戳配置遇到的小问题
问题:
数据库表添加了字段:create_time,update_time;都是datetime类型
模型文件中开启了自动写入
// 表名
protected $name = 'invoice';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';
// 定义时间戳字段名
//protected $createTime = false;
//protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
按照官方文档我使用了第二种方法,在模型中配置开启
写好配置,我就在控制器中写了个插入数据的语句,在这里要注意,只能使用模型更新语句
$invoice->buyerName='5555';
$invoice->orderNo='s234325235';
$invoice->invoiceDate='2021-7-28 12:00:00';
$invoice->invoiceType=1;
$invoice->save();
var_dump($invoice->create_time);die();
?结果是一直报错,提示create_time字段是int类型,没法写入数据库
?开始以为是第二种方法不行,要是就改用文档中的第一种方法,也是没有成功,提示同样的错误,意思说的是写入的是int的类型,但是数据库表是datetime类型,对不上号所以报错。
后面就在社区发求助贴,社区网友说我的配置不对,我看了他的回复,综合百度的一些回答,终于知道问题出在哪里了,再次感谢社区朋友的热心回答,问题虽小,但是困扰蛮久。
正确配置:
1.如果你的数据库字段类型不是int的类型时候,就需要开启写入的配置项中定义配置项的字段类型关键字,即
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';
?这个参数可以在全局配置文件配置,也可以在模型中定义
2.开启了自动写入和写入格式,那么还需要配置一个关键参数,就是格式定义,这个是在配置文件中定义的
// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s
'datetime_format' => 'Y-m-d H:i:s',
这样配置之后,就可以自动写入更新和创建时间了,数据库是datetime格式的,读取出来的数据也是datetime格式时间
?再次感谢社区大佬的指点了!
|