avatar

目录
gorm-deleted_at

之前有张表,因为业务逻辑并不复杂,直接做的硬删除,现在因为某些原因,需要保留删除的数据,所以改为软删除。

查阅 gorm 文档,发现 gorm中:一个 model 有 DeletedAt 字段,他将自动获得软删除的功能! 当调用Delete方法时, 记录不会真正的从数据库中被删除, 只会将DeletedAt字段的值会被设置为当前时间。

使用了软删除之后,发现 gorm 在SELECT等语句时,会默认在WHERE 语句中,加上一句 WHERE deleted_at is NULL.

那么如果后悔了,怎么恢复软删除的数据呢? gorm 也有相应的方法:

sql
1
2
3
-- 查找包含软删除后的数据
db.Table("user1").Unscoped().Where("age=20").Find(&user)
Update("deleted_at", nil)
sql
1
2
-- 恢复软删除的数据
db.Table("user1").Unscoped().Update("deleted_at", nil)
sql
1
2
-- 彻底删除软删除的数据
db.Unscoped().Delete(&order)
文章作者: Viola Tangxl
文章链接: https://violatangxl.github.io/2020/07/31/gorm-deleted-at/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 椰子是只猫
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论