当前位置: 首页 > 面试题库 >

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

易俊远
2023-03-14
问题内容

我正在使用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在记录更新时会发生变化
  • 确保您未将数据库中表中的created_at字段posts定义为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP-这样,每当您更新记录时,该字段created_at也将被更新为当前日期时间

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

const UPDATED_AT = 'created_at';

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



 类似资料:
  • 我目前正在学习Laravel和Elotent,并且已经建立了一些初始迁移。我的一个表只需要一个创建时间,因为一旦在其中插入一行,它将永远不会被更新: 我理解,Eloquent在默认情况下希望出现在上创建的上更新的

  • 我使用的是Laravel 4,有两种型号: 上有标准的时间戳(处创建,处更新),我想在附加/分离

  • 是否有任何方法可以使用雄辩的模型来更新Laravel中的记录,只要对该记录进行了更改?我不希望任何用户无正当理由反复请求数据库,只是点击按钮保存更改。我有一个函数,可以根据页面中是否有更改来启用和禁用save按钮,但我想知道是否可以确保在服务器端也执行这种功能。我知道我可以通过检查记录是否有变化来自己完成它(意思是:不需要借助框架的内部功能),但在这样做之前,我想知道Laravel eloquen

  • 问题内容: 插入新记录或更新(如果存在)的快捷方式是什么? 问题答案: 这是“ lu cip”正在谈论的完整示例: 以下是Laravel最新版本上的文档更新链接 此处的文档:更新的链接

  • 我正在将我们的一个web应用程序从CodeIgniter转换为Laravel。然而,目前我们不想将/字段添加到我们所有的表中,因为我们有一个日志类,它已经为我们做了更深入的工作。 我知道我可以设置在: 然而,我宁愿不改变Laravel的核心文件,或者让我的每个模型都在顶部。有没有办法在其他地方禁用所有型号?

  • 使用Laravel的雄辩模型,我如何在访问对象时更新对象的数据,如果它已经 我有另一个API,我想确保数据是半最新的,但想缓存在我的数据库中的数据,而不是调用他们的API每次页面加载。 是否有Laravel在每次加载模型时调用的函数,我可以检查30天是否已经过去,调用API加载新数据,然后保存它?