基本介绍

ORM链式操作-时间维护 - 图1注意

需要注意,该特性仅对链式操作有效。

gdb 模块支持对数据记录的写入、更新、删除时间自动填充,提高开发维护效率。为了便于时间字段名称、类型的统一维护,如果使用该特性,我们约定:

  • 字段的类型可以为时间类型、数字整型或者布尔型,如: date, datetime, timestamp, int, uint, big int, bool等。
  • 字段的名称支持自定义设置,默认名称约定为:
    • created_at 用于记录创建时更新,仅会写入一次。
    • updated_at 用于记录修改时更新,每次记录变更时更新。
    • deleted_at 用于记录的软删除特性,只有当记录删除时会写入一次。 字段名称不区分大小写,也会忽略特殊字符,例如 CreatedAt, UpdatedAt, DeletedAt 也是支持的。

特性配置

时间字段名称可以通过配置文件进行自定义修改,并可使用 timeMaintainDisabled 配置在数据库实例上完整关闭该特性。

在配置文件中对应配置项:

  1. database:
  2. default: # 分组名称,可自定义,默认为default
  3. createdAt: "created_at" # (可选)自动创建时间字段名称
  4. updatedAt: "updated_time" # (可选)自动更新时间字段名称
  5. deletedAt: "is_deleted" # (可选)软删除时间字段名称
  6. timeMaintainDisabled: false # (可选)是否完全关闭时间更新特性,为true时CreatedAt/UpdatedAt/DeletedAt都将失效

ORM链式操作-时间维护 - 图2提示

特别是针对历史项目,本身已经存在不一样的时间字段名称时,可以通过配置项灵活配置时间字段名称。

完整的数据库配置请参考 ORM使用配置 章节。

特性启用

当数据表包含 created_atupdated_atdeleted_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方法插入数据