sql - Eloquent 更新方法更改 created_at 时间戳

标签 sql database laravel eloquent

我正在使用 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();

仅使用此代码应更新 nameupdated_at 时间戳(而不是 created_at)。如果 created_at 也更新了,这意味着您可能有一些自定义模型设置或:

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

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

const UPDATED_AT = 'created_at';

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

关于sql - Eloquent 更新方法更改 created_at 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479005/

相关文章:

php - 具有两个外键的三个表之间的 Laravel 关系

php - 关注者查询

php - Laravel 没有检测到我的本地(开发)数据库配置文件

MySQL 将列转换为行

php - SQLSTATE[HY000] [1044] cPanel 中的用户访问被拒绝

php - 使用 laravel auth 在 PWA 中离线时保持用户登录

sql - 如何在表中查找值并将其插入到另一个表中?

sql - Hive:无法执行带限制的联合查询

mysql - 谁能帮我看看这个 SQL 查询

javascript - 从数据库中的搜索返回正则表达式模式 (NodeJS)