答案:可通过DB门面或Eloquent查询构造器直接更新时间戳。使用DB::table('users')->where('id', 1)->update(['updated_at' => now()])避免模型加载;同理,App\Models\User::where('id', 1)->update(['updated_at' => now()])可跳过实例化,不触发事件;若字段名为last_modified等非默认名,需手动指定正确字段名以确保更新成功。

如果您希望在 Laravel 中更新数据库记录的时间戳,但不想先从数据库中加载对应的模型实例,则可以直接使用查询构造器来完成操作,避免不必要的模型加载和内存消耗。
本文运行环境:MacBook Pro,macOS Sonoma
通过 Laravel 的 DB 门面,可以构建原始的 SQL 更新语句,直接对指定记录的时间字段进行更新,而无需实例化任何 Eloquent 模型。这种方法适用于只需要修改时间戳且不涉及模型事件触发的场景。
1、引入 DB 门面,在控制器或服务代码中使用 use Illuminate\Support\Facades\DB;。
2、调用 table 方法指定目标数据表名称,例如 users 表。
3、使用 where 条件定位需要更新的具体记录,如根据 id 筛选。
4、在 update 方法中显式设置 updated_at 字段为当前时间,示例:DB::table('users')->where('id', 1)->update(['updated_at' => now()]);。
即使使用 Eloquent 模型类,也可以仅将其作为查询构造器的入口,而不实际加载模型实例。这种方式保留了模型关联表名的优势,同时避免了模型初始化开销。
1、调用模型的静态方法执行查询,例如 App\Models\User::class。
2、链式调用 where 方法精确匹配目标记录。
3、使用 update 方法传入包含时间戳字段的数据数组,示例:\App\Models\User::where('id', 1)->update(['updated_at' => now()]);。
4、注意该方式不会触发模型的 saving、updating 等事件,也不会自动维护 created_at 字段。
当您的数据表未使用 Laravel 默认的 created_at 和 updated_at 字段命名时,需确保手动指定正确字段名以实现准确更新。
1、确认数据库表中实际使用的时间戳字段名称,例如 last_modified。
2、在执行更新操作时,将字段名替换为实际名称,示例:DB::table('posts')->where('id', 5)->update(['last_modified' => now()]);。
3、若使用模型查询构造器,同样需保持字段名一致,避免因拼写错误导致更新失败。
以上就是laravel怎么在不加载模型的情况下更新时间戳_laravel无需加载模型更新时间戳方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号