当前位置: 首页 > 知识库问答 >
问题:

Laravel的雄辩可以更新创建时间而不是更新时间吗?

武卓
2023-03-14

我目前正在学习Laravel和Elotent,并且已经建立了一些初始迁移。我的一个表只需要一个创建时间,因为一旦在其中插入一行,它将永远不会被更新:

    // The run table only needs a creation timestamp, not an updated timestamp
    Schema::create('runs', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamp('created_at');
    });

我理解,Eloquent在默认情况下希望出现在上创建的和在上更新的列,并且可以完全关闭此功能。从手册中:

默认情况下,Eloquent希望表中存在created_at和updated_at列。如果您不希望这些列由Eloquent自动管理,请将模型上的$timestamps属性设置为false。

但是,雄辩有可能被要求自动设置创建时间而不是更新时间吗?我意识到我可以手动做到这一点,但如果雄辩能“免费”做到这一点就好了。


共有2个答案

贺聪
2023-03-14

你可以用

$model->touch();
孟洋
2023-03-14
匿名用户

简短回答:没有。

我看了一下处理时间戳的框架/src/照明/数据库/雄辩/Model.php,这是不可能的。

您可以重写一系列方法使其工作:

  • 公共函数setUpdatedAt($value)
  • 任何地方都可以在
  • 取决于usesTimestamps()值的任何位置
  • 当然还有其他地方

充其量,这将容易受到未来代码更改的影响,所以我不推荐它。

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

  • 问题内容: 我正在使用Eloquent进行数据库处理,当我使用更新方法更新记录时,时间戳被更改了,如何防止这种情况发生? 时间戳工作正常 问题答案: 如果您的模型中没有任何自定义设置。您可以像这样更新记录: 仅应使用此代码更新时间戳(而不是)。如果还进行了更新,则意味着您可能具有一些自定义模型设置,或者: 您可能具有数据库触发器,这些触发器在记录更新时会发生变化 您可能已经注册了一些事件,这些事件

  • 问题内容: 我在mysql表中具有属性为“ ON UPDATE CURRENT_TIMESTAMP”的时间戳。有没有办法在特殊情况下手动禁用更新时间戳?(例如:更新条目以修改博客文章,但不重新添加日期) 问题答案: 有没有办法在特殊情况下手动禁用更新时间戳?(例如:更新条目以修改博客文章,但不重新添加日期) 听起来您需要配置默认约束,以便仅在插入时填充列: 将其更改为仅这意味着任何修订都不会触发时

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

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

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