例如一个 user 表有 id 、name 、sex 、desc 四个字段,我想查最后 10 条记录,将十条记录的 name 、sex 、desc 各返回一个切片给我,请问有什么简便的方式嘛,我看官网有 Pluck 可以用,但是只能返回单个字段的切片
1
johnlin 2022-05-31 14:11:29 +08:00
遍历然后自己重新组
|
2
2024 2022-05-31 14:22:35 +08:00
可以用这个工具生成 orm , https://github.com/go-home-admin/toolset
直接生成对应函数 type UsersList []*Users func (l UsersList) GetIdList() []int64 {} func (l UsersList) GetIdMap() map[int64]*Users {} |
3
chengxiao 2022-05-31 14:27:05 +08:00
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 |
5
2024 2022-05-31 14:36:34 +08:00
@johnlin 每次都重新写太麻烦了, 获取 id 列表,或者 id map 基本是经常用到的,直接生成放着完事。
看我生成的例子 https://github.com/go-home-admin/go-admin/blob/main/app/entity/demo/user.go |
7
bronya0 OP @chengxiao 不是这样写啦,我测了这是返回一个切片,其中每个元素是一条数据库记录,只有 Select 的才查其他是零值。我的需求是将多个记录的某个字段组成一个切片,目前就是循环每个记录将制定字段装到一个切片里,这样的方法
|
9
LoNeFong 2022-06-01 14:31:37 +08:00
尝试下别人的实现: https://github.com/jucardi/go-streams
|
10
fighterlyt 2022-06-01 14:39:26 +08:00 via Android
Pluck
|