首页 > 其他分享 >go gorm 软删除和查询

go gorm 软删除和查询

时间:2023-12-18 12:13:33浏览次数:40  
标签:20 users 删除 age db 查询 go gorm

软删除

如果您的模型包含了一个 gorm.deletedat 字段(gorm.Model 已经包含了该字段),它将自动获得软删除的能力!

拥有软删除能力的模型调用 Delete 时,记录不会从数据库中被真正删除。但 GORM 会将 DeletedAt 置为当前时间, 并且你不能再通过普通的查询方法找到该记录。

// user 的 ID 是 `111`
db.Delete(&user)
// UPDATE users SET deleted_at="2013-10-29 10:23" WHERE id = 111;

// 批量删除
db.Where("age = ?", 20).Delete(&User{})
// UPDATE users SET deleted_at="2013-10-29 10:23" WHERE age = 20;

// 在查询时会忽略被软删除的记录
db.Where("age = 20").Find(&user)
// SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;

如果您不想引入 gorm.Model,您也可以这样启用软删除特性:

type User struct {
  ID      int
  Deleted gorm.DeletedAt
  Name    string
}

查找被软删除的记录

您可以使用 Unscoped 找到被软删除的记录

db.Unscoped().Where("age = 20").Find(&users)
// SELECT * FROM users WHERE age = 20;

但是scan是可以查询该记录的

scan无视DeletedAt

db.Where("age = 20").Scan(&users)
// SELECT * FROM users WHERE age = 20;

永久删除

您也可以使用 Unscoped 永久删除匹配的记录

db.Unscoped().Delete(&order)
// DELETE FROM orders WHERE id=10;

标签:20,users,删除,age,db,查询,go,gorm
From: https://www.cnblogs.com/zhanchenjin/p/17910843.html

相关文章

  • MongoDB mongoshake 迁移分片到复制集合
    Mongoshake是阿里云自研的开源工具,实现Mongodb数据库之间的数据同步,数据灾备,数据多活,分库分表,版本升级无间断。其中需要注意的一些事项1 Mongoshake尽量使用较高的版本,低版本的产品有一些Bug 2 Mongoshake在使用中需要源库的用户权限为readAnyDatabase  同时Mongoshake......
  • easyexcel只通过表名来动态查询并动态导出数据
    EasyExcel动态表头即动态数据生成1️⃣业务需求需要将数据库中的所有表放在一个下拉框中,下拉框支持模糊查询到相关的表,然后通过这个表名查询到数据库的数据,切换不同的表查询出来相关表的列和数据需要注意的点:1)js实现模糊搜索   2)导出的表头和数据都是动态生......
  • Linux服务器快速安装MongoDB-5.0
    最近开始体验FastGPT开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到MongoDB,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开MongoDB社区版下载页面,选择我们想要安装的版本、操作系统、和包类型,......
  • django中配置使用日志(logging)
    一、以dict的方式在setting中配置LOGGING={"version":1,#thedictConfigformatversion"disable_existing_loggers":False,#retainthedefaultloggers"formatters":{"standard":{#日志输出格式配置......
  • SslSugar导航查询与EF Core导航查询
    SqlSugar:当我们在SQLSugar中定义了两个实体类之间的关联关系时,可以使用导航属性进行关联查询。导航属性是表示一个实体对象与其他实体对象之间关联的属性。通过导航属性,我们可以方便地在查询中访问和检索相关联的实体数据。在SQLSugar中,导航属性需要满足以下条件:导航属性必须......
  • Argo Rollouts TrafficRouting结合Istio进行Canary流量管理基础
    ArgoRolloutsTrafficRouting概述流量治理技术实现如下:1.按百分比进行流量管理(即5%的流量应流向新版本,其余流量流向稳定版本)2.基于标头的路由(即将带有特定标头的请求发送到新版本)3.镜像流量,其中所有流量都被复制并并行发送到新版本(但响应被忽略)TrafficRouting配置api......
  • cargo-make rust 任务执行以及构建工具
    再学习nakago框架的时候发现其使用了cargo-make这个工具,但是很方便,类似make的构建模式包含的特性依赖管理,别名支持,支持workspace简单使用安装cargoinstall--forcecargo-make参考使用创建一个cargo项目 cargonewappdemo......
  • OpenSergo & Dubbo 微服务治理最佳实践
    *作者:何家欢,阿里云MSE研发工程师Why微服务治理?现代的微服务架构里,我们通过将系统分解成一系列的服务并通过远程过程调用联接在一起,在带来一些优势的同时也为我们带来了一些挑战。如上图所示,可以看到词云中所展示的都是目前微服务架构在生产上所遇到的挑战。比如,最常见的流......
  • mongodb避坑
    1.首先MongoDB6.0及以上的版本是不带mongoshell的,所以要向用需要自己去下载,然后将压缩包解压到桌面然后复制过去一定是复制过去,要不然mongo的管理员权限不让你复制,  完成之后在这个文件加下的bin中双击后回车就可进入shell界面。2.然后是API操作,这里用的是maven,我们将代......
  • ugot灯光控制
      fromuexplore_interfacesimportEventfromuexplore_interfacesimportJoypadfromuexplore_interfacesimportDevicefromuexplore_interfacesimportColorfromuexplore_interfacesimportUtils_E6_88_91_E7_9A_84_E5_8F_98_E9_87_8F=0R=0G=0B=......