繁体   English   中英

Laravel:防止 updated_at 在创建记录时填充

[英]Laravel: prevent updated_at from filling on record creation

在 Laravel >=5.8 的最新版本中,我注意到当你创建一个新的模型记录时,表中的updated_at列会自动填充与created_at相同的值。 虽然在Model::create()上填充created_at是有意义的,但填充updated_at什么意义呢? 在我看来,像 Laravel 5.8 之前那样将其保留为NULL会更有意义

有没有已知的简单方法来禁用这种新行为?

我个人更喜欢将updated_at设置为创建时的当前时间戳的当前行为。 这样,当按updated_at排序时,未修改的记录将放置在修改的记录之间。
如果updated_at的初始值为null ,它们将被放置在列表的开头或结尾。 我不认为这是大多数人想要的。

但是,您可以在模型的类中更改它:

protected static function booted(): void
{
    static::creating(function (self $model) {
        $model->updated_at = null;
    });
}

从技术上讲,如果它被创建,它也是模型的最后一次更新。 这是 Laravel 的默认行为。 如果您愿意,您可以禁用它并为您的模型编写自己的创建/更新方法。 但是我会保留它并质疑为什么它会导致您的逻辑/功能出现问题。

//your model
public $timestamps = false;

// boot
static::creating( function ($model) {
    $model->setCreatedAt($model->freshTimestamp());
});

//static::updating() .... and so on

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM