【问题标题】:Laravel: MySQL auto-updates my updated_at field everyday without any update on articleLaravel:MySQL 每天自动更新我的 updated_at 字段,没有任何文章更新
【发布时间】:2017-08-15 15:26:33
【问题描述】:

我最近在本地主机上使用 Laravel 5.4 开发了一个博客应用程序,一切正常。但是,当我将我的应用程序上传到互联网上的远程服务器上时,每个帖子上的 updated_at 字段每天都会自动更新。

在我的本地机器上运行相同的代码可以正常工作,并且 updated_at 字段仅在帖子更新时更新。我猜测问题出在数据库配置级别,但我不知道如何解决。

源代码: 迁移

Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->string('featured_image');
    $table->string('slug')->unique();
    $table->text('body');
    $table->boolean('published')->default(false);
    $table->unsignedInteger('user_id');
    $table->integer('views')->default(0);
    $table->timestamps();
    $table->softDeletes();

    $table->foreign('user_id')->references('id')->on('users');
});

我的模型 Post.php 中有这个:

    protected $dates = ['created_at', 'updated_at', 'deleted_at'];

我添加源代码只是为了避免疑问,因为它与在我的本地主机上运行并产生所需结果的源代码相同。

【问题讨论】:

  • 你的意思是没有人在更新帖子,但是 updated_at 每天都在更新。确定是否有任何正在按计划运行的脚本进行这些更新?
  • 我认为这是因为您的views 为用户的每次浏览都更新了
  • @MisaGH 如果是这种情况,我该如何识别和修复它?有什么想法吗?

标签: mysql laravel laravel-5 laravel-5.3


【解决方案1】:

这是因为您的 views 字段会针对用户的每个视图进行更新。

您可以在增加视图之前禁用更新时间戳字段:

$obj->timestamps = false;
$obj->views += 1;
$obj->save();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多