【问题标题】:Why does this field change automatically [duplicate]为什么此字段会自动更改[重复]
【发布时间】:2020-09-02 19:01:42
【问题描述】:

型号

...
protected $dates = [
        'closed_at',
    ];
...

表格信息

...
$table->timestamp('closed_at');
...

为什么修改模型时closed_at字段会自动更新?

【问题讨论】:

  • 控制器也写代码
  • 我只是在 Tinker 中运行代码,像这样$post = Post::find(1); $post->title = 'new title'; $post->save();
  • 那不应该发生。 $dates 属性仅将其转换为碳实例不会更新它
  • 不久前我遇到了同样的问题:stackoverflow.com/questions/56045660/…。我想你已经明白了,但是 MySQL 对日期字段做了一些奇怪的事情。我认为如果您在迁移中使用$table->timestamps(),添加created_atupdated_at,您就不会遇到这个问题,所以以后要考虑一些事情。或者在迁移中包含->nullable()

标签: laravel


【解决方案1】:

这是因为$table->timestamp('field')是mysql自动维护的。 赞这个DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

【讨论】:

    【解决方案2】:

    它不会自动进行。你必须插入它。

    $post= Post::find(1);
    $post->title= 'new title';
    $post->closed_at=now();
    $post->save();
    

    更多信息see documentation 或者 您可以查看 stackoverflow answer 以了解类似问题。

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2016-06-16
      • 2017-09-14
      • 1970-01-01
      • 2019-11-14
      相关资源
      最近更新 更多