gorm 如何在 gin controller 中构建复杂的查询条件?-灵析社区

kunkun小黑子

我的的查询为: **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?

阅读量:168

点赞量:0

问AI
看数据的中二丸子头
如果想要自动生成查询条件,你的需要定义一个规范,否则没法解析。比如这样接口:?query=name=xx,age=12,time<2023-12-13 然后你就可以解析为key-value的模式,自动生成查询条件,但是要主要安全,内部系统可以这样使用。 或者直接通过请求体定义更加复杂的格式