【问题标题】:Laravel keeps setting value for updated_at column even though I have set timestamps to false即使我已将时间戳设置为 false,Laravel 仍会为 updated_at 列设置值
【发布时间】:2014-08-25 23:14:29
【问题描述】:

我有一个public $timestamps = false 的模型。当我调用$model->save() 时,我的数据库中的updated_at 列中会添加一个值,即使在调用save() 之前我没有在代码中的任何位置设置update_at 值。

我的数据库中updated_at 列的默认值为NULL。它设置为 after 的值是我服务器上的当前时间(如果我在终端/CLI 上调用 date 得到的时间相同)。预期的行为是updated_at 被简单地设置为NULL,除非我明确设置$model->updated_at

我正在使用 Apache 2.4.7 (Ubuntu)、PHP 5.5.9、MySQL 5.5.35 和 Laravel 4.1.30。

【问题讨论】:

  • 贴出你的模型代码?
  • 你确定是 Laravel 做出了改变吗?也许您的数据库架构已设置为在每次更改时自动更新列本身?
  • 感谢您的帮助!我发现了我的问题(derp)。我确实让我的数据库自动将 updated_at 列设置为当前日期,但我禁用了它(并将默认值设为空),所以这不是问题。

标签: php laravel-4


【解决方案1】:

原来在调用save() 方法后,我在更新时间戳的同一模型上调用了touch() 方法。我删除了touch() 声明。为了让自己完全控制created_atupdated_at 列,我还通过将以下代码添加到模型类来禁用日期突变:

public function getDates()
{
    return array();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2020-11-14
    • 2020-11-16
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多