+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 通过返回切片的值来更新 GORM 中的记录? >

通过返回切片的值来更新 GORM 中的记录?

时间:2024-04-05 16:00:35

有志者,事竟成!如果你在学习golang,那么本文《通过返回切片的值来更新 GORM 中的记录?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容
在创建 cli 应用程序时,我遇到了使用 Gorm 批量保存数据的问题。

具体来说,使用包含要保存为多对多关系的值的切片。

命令 eddie track mood -q 9 --tags=one,two, three,four -i 会像这样创建静态良好的内容:

two := &schema.record{
    type: "mood",
    quality: 9,
    tags: []schema.tag{
        {name: "one"},{name: "two"},{name: "three"},{name: "four"},
    },
    important: false,
}
但是...使用 for/range 循环,我只选取最后一个(我想这是显而易见的原因),因此 db.create(&two) 返回一个标签,而不是多个。

var t []schema.Tag
for _, v := range tags {
    t = []schema.Tag{{Name: v}}
}
r := &schema.Record{
    Type: "mood",
    Quality: q,
    Tags: t,
    Important: i,
}
database.Create(&r)
fmt.Printf("You rated your mood a %d.\n", q)
fmt.Println("Record ID:", r.ID)
fmt.Println("Tags:", r.Tags)
return err

You rated your mood a 9.
Record ID: 11
Tags: [{four}]
我考虑过的事情:

我不想将“一、二、三、四”保存为单个输入,稍后解析
批量更新不会保留 id、关系(键),因此(根据我的理解)这应该是单个 db.create() 或使用省略,然后立即更新
我是 go 新手(过去 8 年的 PHP 开发人员),所以我需要一些帮助!
我的结构设置可能不正确?
返回切片值时如何批量更新 gorm 中的记录?


解决方案

目前,我相信我已经找到了解决办法。

func parse(t []string) []schema.tag {

    var tags []schema.tag

    for i := 0; i < len(t); i++ {
        tag := []schema.tag{{name: t[i]}}
        tags = append(tags, tag...)
    }

    return tags
}
这给了我以下输出:

You rated your mood a 9.
Record ID: 28
Tags: [{Stackoverflow} {Code} {SNL} {IASIP} {Excited}]
如果有人有任何要补充的内容,希望能得到一些额外的帮助或讨论。

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title