我有一个在Laravel 3中构建的应用程序,我遇到了一个非常奇怪的错误。我有一个包含两个日期时间字段的模型:start_time
和end_time
。我还为此模型启用了时间戳,因此还有created_at
和updated_at
个日期时间字段。
我有一个控制器动作,用于处理此模型中对象的编辑/更新。运行此操作时,每隔一次更改end_time
字段,start_time
字段就会被updated_at
字段的分钟和秒覆盖。我知道这听起来很疯狂,但这是我在调试时所做的一些事情。
首先,我使用fill_raw($input)
功能切换,并开始使用手动分配,以防万一有奇怪的事情发生。
$object->start_time = $start_time; $object->end_time = $end_time; $object->save();
我还在整个操作过程中添加了echo
个语句,以确保在任何时候都没有更改值,包括在save()
函数之后打印存储在对象中的值的值叫做。每次价值都符合预期。但是,在重定向页面的操作结束和页面重新加载之间的某个时间点,数据库中的值将被更改。
此时我认为它在数据库端必定是奇怪的,因为我知道,例如在PHPMyAdmin中,当您手动添加行时,它会自动填充日期时间字段NOW
'设置为NOT NULL
但没有填写。但话虽如此,我已经仔细检查过该字段不是空的,因为它具有正确的值。我在这里走到了尽头,真的可以用另一种观点。
编辑:
Here's指向相关控制器操作副本的链接。我再次指出,整个操作中都有echo
个语句,我用它来验证输入数据是否正确,并且在整个操作过程中不会以任何意外方式进行更改。我遇到的问题仅在操作运行后才会出现。
答案 0 :(得分:1)
更新为当前时间的列与具有ON UPDATE CURRENT_TIMESTAMP
子句的列一致。
发出SHOW CREATE TABLE yourtablename
可以确认。