Eloquent 更新方法更改 created_at 时间戳

Eloquent update method change created_at timestamp

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

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

updated_at 时间戳工作正常

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

$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
  • 确保数据库中 posts table 中的 created_at 字段未定义为 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - 这样每当您更新记录时, created_at 都会也更新为当前日期时间

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

const UPDATED_AT = 'created_at';

如果还会解释为什么 created_at 在您更新记录时会发生变化。