V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
bronya0
V2EX  ›  Go 编程语言

请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片

  •  
  •   bronya0 · 2022-05-31 12:01:58 +08:00 · 1498 次点击
    这是一个创建于 931 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如一个 user 表有 id 、name 、sex 、desc 四个字段,我想查最后 10 条记录,将十条记录的 name 、sex 、desc 各返回一个切片给我,请问有什么简便的方式嘛,我看官网有 Pluck 可以用,但是只能返回单个字段的切片

    10 条回复    2022-06-01 14:39:26 +08:00
    johnlin
        1
    johnlin  
       2022-05-31 14:11:29 +08:00
    遍历然后自己重新组
    2024
        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 {}
    chengxiao
        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
    chengxiao
        4
    chengxiao  
       2022-05-31 14:29:12 +08:00
    @chengxiao struct 没补齐,都不会拼字母了哈,😅
    2024
        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
    ScepterZ
        6
    ScepterZ  
       2022-05-31 15:26:44 +08:00
    希望 go 以后能.map(_.name).toList
    bronya0
        7
    bronya0  
    OP
       2022-05-31 17:38:39 +08:00
    @chengxiao 不是这样写啦,我测了这是返回一个切片,其中每个元素是一条数据库记录,只有 Select 的才查其他是零值。我的需求是将多个记录的某个字段组成一个切片,目前就是循环每个记录将制定字段装到一个切片里,这样的方法
    Mitt
        8
    Mitt  
       2022-05-31 18:46:01 +08:00
    @bronya0 #7 var result []map[string]interface{}

    然后按 1L 说的自己重新切片
    LoNeFong
        9
    LoNeFong  
       2022-06-01 14:31:37 +08:00
    尝试下别人的实现: https://github.com/jucardi/go-streams
    fighterlyt
        10
    fighterlyt  
       2022-06-01 14:39:26 +08:00 via Android
    Pluck
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5450 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:43 · PVG 16:43 · LAX 00:43 · JFK 03:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.