Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片
例如一个 user 表有 id 、name 、sex 、desc 四个字段,我想查最后 10 条记录,将十条记录的 name 、sex 、desc 各返回一个切片给我,请问有什么简便的方式嘛,我看官网有 Pluck 可以用,但是只能返回单个字段的切片
Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片
遍历然后自己重新组
更多关于Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
可以用这个工具生成 orm , https://github.com/go-home-admin/toolset
直接生成对应函数
type UsersList []*Users
func (l UsersList) GetIdList() []int64 {}
func (l UsersList) GetIdMap() map[int64]*Users {}
type Result strut {
Name string
Sex int
Desc string
}
var result Result
err = db.Table(“user”).Select(“name,sex,desc”).Limit(10).Order(“id DESC”).Find(&result).Error
struct 没补齐,都不会拼字母了哈,😅
每次都重新写太麻烦了, 获取 id 列表,或者 id map 基本是经常用到的,直接生成放着完事。
看我生成的例子
https://github.com/go-home-admin/go-admin/blob/main/app/entity/demo/user.go
希望 go 以后能.map(_.name).toList
不是这样写啦,我测了这是返回一个切片,其中每个元素是一条数据库记录,只有 Select 的才查其他是零值。我的需求是将多个记录的某个字段组成一个切片,目前就是循环每个记录将制定字段装到一个切片里,这样的方法
#7 var result []map[string]interface{}
然后按 1L 说的自己重新切片
尝试下别人的实现: https://github.com/jucardi/go-streams
Pluck
在 Go 语言中使用 GORM 查询某个表的多条记录的指定字段,并将每个字段的值分别存储在一个切片中,你可以通过以下方式实现:
-
定义结构体:首先,定义一个结构体来映射数据库表。
-
使用
Select
方法:使用 GORM 的Select
方法来选择你需要的字段。 -
使用
Find
方法:将查询结果映射到一个切片中,但注意这里不能直接得到每个字段单独的切片,需要后续处理。 -
处理结果:遍历查询结果,将指定字段的值分别存储到不同的切片中。
示例代码如下:
type User struct {
ID uint
Name string
Age int
}
func main() {
var users []User
var ids []uint
var names []string
var ages []int
db.Select("id, name, age").Find(&users)
for _, user := range users {
ids = append(ids, user.ID)
names = append(names, user.Name)
ages = append(ages, user.Age)
}
// ids, names, and ages now contain the respective field values as slices
}
在这个例子中,db
是你的 GORM 数据库连接。Select
方法指定了要查询的字段,Find
方法将结果映射到 users
切片中,然后遍历 users
切片,将每个字段的值分别存储到 ids
、names
和 ages
切片中。
这样,你就实现了从表中查询多条记录的指定字段,并将每个字段的值分别存储在一个切片中。