你值得了解的8个Laravel模型时间戳使用小技巧(收藏)

下面由laravel教程栏目给大家分享8个laravel模型时间戳使用小技巧,看看你都没用过,没用就快来收藏吧,希望对大家有所帮助!

你值得了解的8个Laravel模型时间戳使用小技巧(收藏)

默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两个字段。当然,我们可以做很多自定义配置,实现很多有趣的功能。下面举例说明。

1、禁用时间戳

如果数据表没有这两个字段,保存数据时 Model::create($arrayOfValues); —— 会看到 SQL error。Laravel 在自动填充 created_at / updated_at 的时候,无法找到这两个字段。

禁用自动填充时间戳,只需要在 Eloquent Model 添加上一个属性:

class Role extends Model{  public $timestamps = FALSE;  // ... 其他的属性和方法}

2、修改时间戳默认列表

假如当前使用的是非 Laravel 类型的数据库,也就是你的时间戳列的命名方式与此不同该怎么办?也许,它们分别叫做 create_time 和 update_time。恭喜,你也可以在模型种这么定义:

class Role extends Model{  const CREATED_AT = 'create_time';  const UPDATED_AT = 'update_time'; }

3、修改时间戳日期 / 时间格式

以下内容引用官网文档 official Laravel documentation:

默认情况下,时间戳自动格式为 ‘Y-m-d H:i:s’。如果您需要自定义时间戳格式,可以在你的模型中设置 $dateFormat 属性。这个属性确定日期在数据库中的存储格式,以及在序列化成数组或 JSON 时的格式:

class Flight extends Model{  /**   * 日期时间的存储格式   *   * @var string   */  protected $dateFormat = 'U';}

4、多对多:带时间戳的中间表

当在多对多的关联中,时间戳不会自动填充,例如 用户表 users 和 角色表 roles 的中间表 role_user。

在这个模型中您可以这样定义关系:

class User extends Model{  public function roles()  {    return $this->belongsToMany(Role::class);  }}

然后当你想用户中添加角色时,可以这样使用:

$roleID = 1;$user->roles()->attach($roleID);

默认情况下,这个中间表不包含时间戳。并且 Laravel 不会尝试自动填充 created_at/updated_at
但是如果你想自动保存时间戳,您需要在迁移文件中添加 created_at/updated_at,然后在模型的关联中加上 ->withTimestamps();

public function roles(){  return $this->belongsToMany(Role::class)->withTimestamps();}

5、使用 latest() 和 oldest() 进行时间戳排序

使用时间戳排序有两个 “快捷方法”。

取而代之:

User::orderBy('created_at', 'desc')->get();

这么做更快捷:

User::latest()->get();

默认情况,latest() 使用 created_at 排序。

与之对应,有一个 oldest() ,将会这么排序 created_at ascending

巧文书 巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61 查看详情 巧文书

User::oldest()->get();

当然,也可以使用指定的其他字段排序。例如,如果想要使用 updated_at,可以这么做:

$lastUpdatedUser = User::latest('updated_at')->first();

6、不触发 updated_at 的修改

无论何时,当修改 Eloquent 记录,都将会自动使用当前时间戳来维护 updated_at 字段,这是个非常棒的特性。

但是有时候你却不想这么做,例如:当增加某个值,认为这不是 “整行更新”。

那么,你可以一切如上 —— 只需禁用 timestamps,记住这是临时的:

$user = User::find(1);$user->profile_views_count = 123;$user->timestamps = false;$user->save();复制代码

7、仅更新时间戳和关联时间戳

与上一个例子恰好相反,也许您需要仅更新 updated_at 字段,而不改变其他列。

所以,不建议下面这种写法:

$user->update(['updated_at' => now()]);

您可以使用更快捷的方法:

$user->touch();

另一种情况,有时候您不仅希望更新当前模型的 updated_at,也希望更新上级关系的记录。

例如,某个 comment 被更新,那么您希望将 post 表的 updated_at 也更新。

那么,您需要在模型中定义 $touches 属性:

class Comment extends Model {  protected $touches = ['post'];  public function post()  {    return $this->belongsTo('Post');  }}

8、时间戳字段自动转换 Carbon 类

最后一个技巧,但更像是一个提醒,因为您应该已经知道它。

默认情况下,created_at 和 updated_at 字段被自动转换为 $dates,

所以您不需要将他们转换为 Carbon 实例,即可以使用 Carbon 的方法。

例如:

$user->created_at->addDays(3);now()->diffInDays($user->updated_at);

更多编程相关知识,请访问:编程视频!!

以上就是你值得了解的8个Laravel模型时间戳使用小技巧(收藏)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/343546.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
更新Microsoft ACPI电池驱动
上一篇 2026年11月9日 16:58:37
linux如何删除系统用户
下一篇 2026年10月13日 01:20:20

相关推荐

  • 聊聊 Laravel 的队列机制,了解一下队列的使用场景

    聊聊 Laravel 的队列机制,了解一下队列的使用场景聊聊 Laravel 的队列机制,了解一下队列的使用场景聊聊 Laravel 的队列机制,了解一下队列的使用场景聊聊 Laravel 的队列机制,了解一下队列的使用场景

    如何使用 laravel 队列?下面由laravel教程栏目给大家介绍一下使用 laravel 队列的方法,以及使用队列的场景,希望对大家有所帮助! 为什么 ? 首先,我们要知道为什么要使用队列,不使用队列会怎么样!优缺点如何 我们可以举例 几个简单场景。 邮件发送 邮件发送一般会面临哪些问题 ??…

    2026年11月9日 • 用户投稿
    000
  • laravel怎么设置字符集

    laravel怎么设置字符集laravel怎么设置字符集laravel怎么设置字符集laravel怎么设置字符集

    laravel设置字符集的方法:1、打开相应的代码文件;2、利用Schema来修改字符集,代码如“Schema::create(‘codes’, function (Blueprint $table) {{…}}”。 本文操作环境:Windows7系统、Larav…

    2026年11月9日 • 用户投稿
    100
  • laravel的加密方法是什么

    laravel的加密方法是什么laravel的加密方法是什么laravel的加密方法是什么laravel的加密方法是什么

    laravel的加密方法:1、利用Hash,语法“bcrypt(‘需要加密的文本’)”或“Hash::make(‘需要加密的文本’)”;2、使用Laravel的加密器,语法“encrypt(‘需要加密的文本’)”。 本教程操作环…

    2026年11月9日 • 用户投稿
    600
  • laravel如何安全地处理用户上传的文件_Laravel用户上传文件安全处理方法

    答案:Laravel文件上传需验证类型大小、重命名存储、防止脚本执行、控制访问权限。具体包括:使用mimes和max限制文件类型与尺寸,通过store自动重命名并存于storage/app/public,利用图像处理库剥离恶意内容,配置Web服务器禁止执行上传目录脚本,敏感文件经控制器鉴权后响应,确…

    2026年11月9日
    900
  • laravel怎么关闭csrf

    laravel怎么关闭csrflaravel怎么关闭csrflaravel怎么关闭csrflaravel怎么关闭csrf

    方法:1、打开app下的“Kernel.php”文件,找到并注释掉“AppHttpMiddlewareVerifyCsrfToken”代码。2、打开app下的“VerifyCsrfToken.PHP”文件,修改“$except”属性。 本教程操作环境:windows7系统、Laravel5版,DEL…

    2026年11月9日 • 用户投稿
    100
  • Laravel 8.77发布,这些功能被改进了!

    下面由laravel教程栏目给大家介绍《laravel 8.77发布,这些功能被改进了》,希望对大家有所帮助!                                                                                 Laravel 团队发布了 …

    2026年11月9日
    000
  • 解析laravel hasManyThrough如何用?

    下面由laravel教程栏目给大家介绍laravel hasmanythrough用法及参数,希望对大家有所帮助!                                                                                 第一种情况,我称之为传导…

    2026年11月9日
    400
  • tp5和laravel有什么区别

    tp5和laravel有什么区别tp5和laravel有什么区别tp5和laravel有什么区别tp5和laravel有什么区别

    区别:1、Laravel在提交表单时需要在表单中加入“@csrf”来防止跨域攻击,而tp不需要添加;2、Laravel使用“Db::操作(‘原生sql’)”进行原生查询,而tp使用“Db::query(‘原生sql’)”进行原生查询。 本教程操作环境:windows10系统、Laravel6版,DE…

    2026年11月9日 • 用户投稿
    000
  • laravel怎么实现用户邮箱验证流程_laravel用户邮箱验证流程实现方法

    首先启用邮箱验证功能,通过在User模型中实现MustVerifyEmail接口;接着配置认证路由,调用Auth::routes([‘verify’ => true])生成验证相关路由;然后使用verified中间件保护需验证的路由;再配置邮件驱动,设置.env文件中的…

    2026年11月9日
    700
  • Laravel的依赖注入实现原理是什么

    Laravel的依赖注入实现原理是什么Laravel的依赖注入实现原理是什么Laravel的依赖注入实现原理是什么Laravel的依赖注入实现原理是什么

    在Laravel中,依赖注入的实现原理是利用类方法反射,取得参数类型,然后利用容器构造好实例,再使用回调函数调起;注入对象构造函数不能有参数,否则会报错,依赖注入必须要由Router类调起,否则直接用new方式是无法实现注入的。 本文操作环境:Windows10系统、Laravel6版、Dell G…

    2026年11月9日 • 用户投稿
    000
  • laravel中DB::raw的用法是什么

    laravel中DB::raw的用法是什么laravel中DB::raw的用法是什么laravel中DB::raw的用法是什么laravel中DB::raw的用法是什么

    在laravel中,“DB::raw()”方法用于复杂的sql查询,该方法能够将查询到的结果集当成一个临时表,然后使用laravel的查询构造器语法进行分页处理,语法为“DB::raw(‘函数或者字段’);”。 本文操作环境:Windows10系统、Laravel6版、Del…

    2026年11月9日 • 用户投稿
    000
  • laravel定义路由的方法是什么

    laravel定义路由的方法是什么laravel定义路由的方法是什么laravel定义路由的方法是什么laravel定义路由的方法是什么

    laravel定义路由的方法:1、利用get方式,语法为“Route::get(路径, function () {return 返回值;});”;2、利用post方式,语法为“Route::post(路径, 匿名方法);”。 本文操作环境:Windows10系统、Laravel6版、Dell G3电…

    2026年11月9日 • 用户投稿
    300
  • laravel中self的用法是什么

    laravel中self的用法是什么laravel中self的用法是什么laravel中self的用法是什么laravel中self的用法是什么

    在laravel中,self关键字用于替代类名,可以引用当前类的静态成员变量和静态函数,也用于抑制多态行为,可以引用当前类的函数而非子类中覆盖的实现,self总是指向当前类以及类实例。 本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。 laravel中self的用法是什…

    2026年11月9日 • 用户投稿
    000
  • laravel怎么为不同的环境(如staging)创建配置文件_laravel多环境配置文件创建方法

    首先创建.env.staging文件并写入预发布环境配置,然后在部署时将其复制为.env文件,接着执行php artisan config:cache使配置生效,最后可通过app()->environment(‘staging’)判断环境并添加特定逻辑。核心是利用.en…

    2026年11月9日
    1100
  • laravel中session的用法是什么

    laravel中session的用法是什么laravel中session的用法是什么laravel中session的用法是什么laravel中session的用法是什么

    用法:1、存储数据,语法为“session()->put(‘key1’, ‘value1’)”;2、获取数据,语法为“session()->all()”;3、清空或删除数据,语法为“session()->pull(‘key…

    2026年11月9日 • 用户投稿
    000
  • laravel中dingo是什么

    laravel中dingo是什么laravel中dingo是什么laravel中dingo是什么laravel中dingo是什么

    在laravel中,dingo是针对laravel、lumen框架的api开发工具包;主要有路由版本管理、“Http Exception”异常处理和“Response Transform”转化响应格式三个功能。 本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。 lara…

    2026年11月9日 • 用户投稿
    000
  • laravel中homestead是什么意思

    laravel中homestead是什么意思laravel中homestead是什么意思laravel中homestead是什么意思laravel中homestead是什么意思

    laravel中,homestead是一个官方预装的“Vagrant box”和Vagrant设置,用于提供开发环境,可以运行在Windows、Mac、或Linux系统,包括了“Nginx web”服务器以及开发Laravel所需要的东西。 本文操作环境:Windows10系统、Laravel6版、…

    2026年11月9日 • 用户投稿
    000
  • laravel的路由命名有什么用

    laravel的路由命名有什么用laravel的路由命名有什么用laravel的路由命名有什么用laravel的路由命名有什么用

    在laravel中,路由命名的作用是生成路由,便于重定向;路由命名可以让特定路由方便地生成URL或重定向。开发者可以用name方法链接到路由来定义指定路由的名称。 本教程操作环境:windows7系统、Laravel6版、Dell G3电脑。 laravel的路由命名 laravel 路由命名的作用…

    2026年11月9日 • 用户投稿
    100
  • laravel契约的用法是什么

    laravel契约的用法是什么laravel契约的用法是什么laravel契约的用法是什么laravel契约的用法是什么

    在laravel中,契约指的是框架提供的一系列定义核心服务的接口,用于方便第三方接口开发人员的开发,所有契约的实现组成了框架所有的核心任务,并且可以通过契约了解指定功能的作用。 本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。 laravel契约的用法是什么 契约是什么…

    2026年11月9日 • 用户投稿
    100
  • laravel中make方法的作用是什么

    laravel中make方法的作用是什么laravel中make方法的作用是什么laravel中make方法的作用是什么laravel中make方法的作用是什么

    在laravel中,make方法用于从容器当中解析一个type,该type是源码当中定义的,解析后返回的结果就是type的一个实例,容器类调用make方法时,若没有已注册的key,会自动通过反射类实例化具体类。 本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。 lara…

    2026年11月9日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信