Laravel 更新模型时不更新 updated_at 等时间戳字段的方式

admin 阅读:41 2024-03-01

默认情况下,Laravel Eloquent 希望模型对应的数据库表中存在 created_at 和 updated_at 列,用于记录模型的创建时间和更新时间。 在创建或更新模型时,Eloquent 会自动设置或更新这些列的值。

然而,我们并不总是需要 Laravel Eloquent 在更新模型时自动更新 updated_at 或其他自定义的代表更新时间的字段,比如我们要更新用户资料或者帖子的访问/浏览次数时。

如果您总是不希望 Eloquent 自动管理这些列,您应该在模型上定义一个 $timestamps 属性,其值为 false

<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Flight extends Model
{
    /**
     * 指示模型是否主动维护时间戳。
     *
     * @var bool
     */
    public $timestamps = false;
}

如果您只是在特定时候不希望 Eloquent 自动管理这些列,那么也可以在模型操作中调用 $model->timestamps = false;

$user = User::find(1);
$user->timestamps = false;
$user->increment('profile_views_count');
$user->save();
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!