[英]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.