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
在您更新记录时会发生变化。
我正在使用 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
在您更新记录时会发生变化。