推荐 最新
kunkun小黑子

gorm 如何在 gin controller 中构建复杂的查询条件?

我的的查询为: controller // 接收query 的参数 func Index(c *gin.Context){ name:=c.DefaultQuery(xxxx,"") // 这里的query 会有不同的参数 age:=c.DefaultQuery(xxxx,"") // 这里的query 会有不同的参数 time:=c.DefaultQuery(xxxx,"") // 这里的query 会有不同的参数 whereStr:="name and ? age >? time < ?" //构建sql 语句 UserServie.Find(whereStr,name,age,time) // 执行查询 } service func Find(where interface{},parm ...interface{})(list []model.UserModel){ db.where(where,parm).Find(&list) return list } 我的问题出现在了controller 中 我不知道如何构建灵活的查询条件 比如前端会"get" 很多的参数过来,比如"姓名"、"年龄"、"时间" 或者他只"get"、"姓名"、"时间" 这样我这里的构建就很麻烦了,也不优雅 请问各位遇到这种情况是如果构建的? map?

0
1
0
浏览量162
笑面猫

【已解决】golang gorm查询: 数据库有数据,但查出来都是零值?

gorm查询有数据,结果都是零值(只有id有值),结果如下,First和Find方法结果都是这样 {"ID":2,"ProjectID":"","PageID":"","Remark":"","PageStatus":"","Title":"","CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z","CreatedBy":"","UpdatedBy":"","Content":"","PageData":"","PageVersion":0} 应该是哪里犯了低级错误,但一直没盯出来,代码如下,调用 // Page 结构体代表 PAGES 表 type Page struct { ID int64 `gorm:"column:id;primary_key;AUTO_INCREMENT;NOT NULL;comment:'自增ID,主键'"` ProjectID string `gorm:"column:project_id;NOT NULL;comment:'项目ID,唯一且不为空'"` PageID string `gorm:"column:page_id;NOT NULL;comment:'页面ID,唯一且不为空'"` Remark string `gorm:"column:remark;comment:'页面描述'"` PageStatus string `gorm:"column:page_status;comment:'页面状态 publish 发布状态;modify 编辑状态'"` Title string `gorm:"column:title;comment:'页面标题'"` CreatedAt time.Time `gorm:"column:created_at;default:current_timestamp;comment:'记录创建时间,自动生成当前时间戳'"` UpdatedAt time.Time `gorm:"column:updated_at;default:current_timestamp on update current_timestamp;comment:'记录更新时间,自动生成当前时间戳,每次更新自动更新为当前时间'"` CreatedBy string `gorm:"column:created_by;comment:'创建人'"` UpdatedBy string `gorm:"column:updated_by;comment:'最后修改人'"` Content string `gorm:"column:content;comment:'页面内容,JSON格式'"` PageData string `gorm:"column:page_data;comment:'页面数据,JSON格式'"` PageVersion int `gorm:"column:page_version;NOT NULL;comment:'页面版本号'"` } func (p *Page) TableName() string { return "pages" } 执行代码如下 var page Page err := db.Default().First(&page, id).Error if err != nil { return nil, err } First 和Find都是这个情况,如果查一个id不存在的,结果确实是不存在不会给上面这种零值 *** 更新:找到原因了,确实是低级错误,上述结构体是让chatgpt自动生成的,数据库设计的时候,字段名是全大写的,生成的时候column写成了小写,一直没盯出来

0
1
0
浏览量118