laravel ORM 只开启created_at的几种方法总结

网络编程 2025-03-13 14:29www.168986.cn编程入门

关于Laravel ORM如何仅启用created_at功能,狼蚁网站SEO优化长沙网络推广为您深入。这是开发者们经常的一个话题,对于希望深入了解这一领域的朋友们来说,这篇文章具有很高的参考价值。那么,跟随长沙网络推广的步伐,我们一起来一下具体的方法。

方法一:通过模型属性设置

我们可以定义User模型,通过修改模型的属性来关闭时间戳的自动维护。在模型的boot方法中,我们可以监听模型的创建事件,只设置created_at而不设置updated_at。这样做可以确保只有创建时间被记录。不过需要注意的是,在使用create方法创建记录时,返回的created_at值的格式可能与预期有所不同。

```php

class User extends Model {

public $timestamps = false; // 关闭时间戳自动维护

public static function boot() {

parent::boot();

// 只添加created_at而不添加updated_at

static::creating(function ($model) {

$model->created_at = $model->freshTimestamp();

// $model->updated_at = $model->freshTimeStamp(); 这一行被注释掉,不设置updated_at

});

}

}

```

但请注意一个细节:返回的created_at值可能是一个包含日期和时间详细信息的数组,而不是简单的日期时间字符串。这可能会与你的预期有所不同。

方法二:通过常量定义

另一种方法是直接在模型中定义常量来关闭updated_at。使用destroy方法删除记录时可能会遇到错误。这是因为删除操作可能会影响模型的属性设置。使用delete和whereIn等查询构建器的方法则不会受到影响。

```php

class User extends Model {

const UPDATED_AT = null; // 关闭updated_at的自动维护

// const CREATED_AT = null; // 如果你也想关闭created_at的自动设置的话(但实际上通常不需要)

}

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by