一尘不染

雄辩的更新方法更改created_at时间戳

sql

我正在使用Eloquent进行数据库处理,当我使用更新方法更新记录created_at时,时间戳被更改了,如何防止这种情况发生?

$post = Post::update([
   'name' => $name
]);

updated_at 时间戳工作正常


阅读 202

收藏
2021-03-08

共1个答案

一尘不染

如果您的模型中没有任何自定义设置。您可以像这样更新记录:

$id = 5; // here put id of record you want to update
$post = Post::findOrFail($id);
$post->name = $name;
$post->save();

name应使用此代码更新updated_at时间戳(而不是created_at)。如果created_at还进行了更新,则意味着您可能具有一些自定义模型设置,或者:

  • 您可能具有数据库触发器,这些触发器created_at在记录更新时会发生变化
  • 您可能已经注册了一些事件,这些事件created_at在记录更新时会发生变化
  • 确保您未将数据库中表中的created_at字段posts定义为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP-这样,每当您更新记录时,该字段created_at也将被更新为当前日期时间

您还应该确保您的Post模型没有这样的东西:

const UPDATED_AT = 'created_at';

如果还会created_at在您更新记录时说明为什么更改。

2021-03-08