基本介绍
需要注意,该特性仅对链式操作有效。
gdb
模块支持对数据记录的写入、更新、删除时间自动填充,提高开发维护效率。为了便于时间字段名称、类型的统一维护,如果使用该特性,我们约定:
- 字段的类型可以为时间类型、数字整型或者布尔型,如:
date
,datetime
,timestamp
,int
,uint
,big int
,bool
等。 - 字段的名称支持自定义设置,默认名称约定为:
created_at
用于记录创建时更新,仅会写入一次。updated_at
用于记录修改时更新,每次记录变更时更新。deleted_at
用于记录的软删除特性,只有当记录删除时会写入一次。 字段名称不区分大小写,也会忽略特殊字符,例如CreatedAt
,UpdatedAt
,DeletedAt
也是支持的。
特性配置
时间字段名称可以通过配置文件进行自定义修改,并可使用 timeMaintainDisabled
配置在数据库实例上完整关闭该特性。
在配置文件中对应配置项:
database:
default: # 分组名称,可自定义,默认为default
createdAt: "created_at" # (可选)自动创建时间字段名称
updatedAt: "updated_time" # (可选)自动更新时间字段名称
deletedAt: "is_deleted" # (可选)软删除时间字段名称
timeMaintainDisabled: false # (可选)是否完全关闭时间更新特性,为true时CreatedAt/UpdatedAt/DeletedAt都将失效
特别是针对历史项目,本身已经存在不一样的时间字段名称时,可以通过配置项灵活配置时间字段名称。
完整的数据库配置请参考 ORM使用配置 章节。
特性启用
当数据表包含 created_at
、 updated_at
、 deleted_at
任意一个或多个字段时,或者包含配置文件中对应的配置字段时,该特性自动启用。
相关文档
📄️ 时间维护-基本使用
本文介绍了使用GoFrame框架管理数据库时间字段的基本方法,包括created_at、updated_at和deleted_at字段的写入和更新机制,以及软删除特性对查询和更新操作的影响,同时展示了联表查询和忽略时间特性Unscoped的方法。通过这些示例,可以有效管理数据的软删除和时间戳,确保数据库记录的准确性。
📄️ 时间维护-整型字段
如果时间字段如created_at、updated_at、deleted_at为整型字段,GoFrame框架的ORM组件会自动识别并写入秒级时间戳。插入操作时created_at自动更新,但更新和删除不改变created_at。使用Replace方法会更新所有时间字段。在软删除情况下,所有查询自动包含deleted_at=0条件。
📄️ 时间维护-布尔字段
介绍GoFrame框架中时间字段为布尔字段的支持,通过示例展示如何使用布尔类型的deleted_at字段进行数据软删除。提供MySQL表结构定义以及在GoFrame中使用ORM组件进行创建记录和软删除操作的示例。
📄️ 时间维护-SoftTimeOption
介绍如何在GoFrame框架中使用SoftTimeOption控制时间写入粒度,实现秒级到毫秒级的时间戳转换,并提供相关MySQL表结构和示例代码,帮助开发者灵活配置时间字段,支持多种时间粒度选项以满足不同项目需求,并通过ORM方法插入数据