Skip to main content

时间维护与软删除

在实际应用当中,数据表中通常会有三个时间字段:创建时间、更新时间、删除时间。GoFrame支持这三个时间字段的自动填充,这三个字段支持的类型为DATEDATETIMETIMESTAMP

  • 创建时间:默认为created_at
  • 更新时间:默认为updated_at
  • 删除时间:默认为deleted_at,数据软删除时使用

如果不想使用默认名称,需要自行修改,可以在配置文件里数据库配置时修改,方式如下:

database:
....
createdAt: "create_time"
updatedAt: "update_time"
deletedAt: "delete_time"

软删除

软删除并不是真正从数据库中把记录删除,而是通过特定的标记在查询时过滤掉这些数据,使这些数据在页面上看不到,但实际上在数据库中仍然存在。通常用于一些需要历史追踪而不能真正删除的数据。

当数据表中有deleted_at字段时,使用Delete方法时不会物理删除数据,只是更新deleted_at字段的值。查询数据时,会自动加上WHERE `deleted_at` IS NULL这一条件,过滤掉已被“删除”的数据。

如果需要查询所有数据,需要使用Unscoped方法

ls, _ := md.Unscoped().All()