1

我在 Laravel 3 中构建了一个应用程序,但遇到了一个非常奇怪的错误。我有一个带有两个日期时间字段的模型:start_timeend_time. created_at我还为此模型启用了时间戳,因此还有updated_atdatetime 字段。

我有一个控制器操作来处理此模型中对象的编辑/更新。运行此操作时,每隔一次更改该end_time字段,该start_time字段就会被该字段的分钟和秒覆盖updated_at。我知道这听起来很疯狂,但这里有一些我在调试时所做的事情。

首先,我从使用该fill_raw($input)功能切换并开始使用手动分配,以防发生一些奇怪的事情。

    $object->start_time = $start_time;
    $object->end_time = $end_time;
    $对象->保存();

我还在echo整个操作中添加了语句,以确保在任何时候都不会更改值,包括在save()调用函数后打印存储在对象中的值的语句。每次值都符合预期。但是,在页面被重定向的操作结束和页面重新加载之间的某个时间,数据库中的值正在更改。

在这一点上,我认为这在数据库端一定很奇怪,因为我知道例如在 PHPMyAdmin 中,当您手动添加一行时,它会NOW在设置为NOT NULL但未填写时自动填充日期时间字段. 但是话虽如此,我已经仔细检查了该字段是否为空,因为它具有正确的值。我在这里陷入了死胡同,真的可以使用另一个视角。

编辑:
这是有问题的控制器操作副本的链接。我要再次指出,在echo整个操作过程中,我使用了一些语句来验证输入数据是否正确,并且在整个操作过程中没有以任何意想不到的方式被更改。我遇到的问题仅在操作运行后出现。

4

1 回答 1

1

更新到当前时间的列与其具有ON UPDATE CURRENT_TIMESTAMP子句一致。

发出一个SHOW CREATE TABLE yourtablename可以确认它。

于 2013-10-07T19:21:14.633 回答