登录
首页 >  Golang >  Go问答

创建gorm函数时只能关联,不能更新关联字段

来源:stackoverflow

时间:2024-02-08 09:33:24 453浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《创建gorm函数时只能关联,不能更新关联字段》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我有以下两个结构:

type user struct {
    id          uuid.uuid      `gorm:"type:uuid"`
    name        string         `gorm:"not null"`
    creditcards []*creditcard  `gorm:"many2many:user_creditcards;"`
}

type creditcard struct {
    id         uuid.uuid  `gorm:"type:uuid"`
    number     string     `gorm:"not null"`
}

我想“单独”创建用户和信用卡。因此,如果我想使用不同的信用卡创建新用户,则需要事先创建信用卡。

那么,假设我创建以下用户:

user := User{
    Name: "My username"
    CreditCard: []*CreditCard{CreditCard{ID:xxxxxx}}
}

如您所见,我没有填充信用卡的所有字段,因为它已经存在,所以我只想添加我想要的用户之间的链接创建,以及现有的信用卡

为此,我正在尝试以下操作:

db.model(&user{}).create(&user) 但它抱怨creditcard.number 为空。 我也尝试过:

db.model(&user{}).omit(clause.associations()).create(&user)

但我仍然遇到同样的错误。

我错过了什么吗?


正确答案


使用这个

package main

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

type Database struct {
    Gorm *gorm.DB
}

func NewDatabase(url string) (*Database, error) {
    cfg := &gorm.Config{}

    db, err := gorm.Open(mysql.Open(url), cfg)
    if err != nil {
        return nil, err
    }

    instance := &Database{
        Gorm: db,
    }

    err = instance.setup()
    if err != nil {
        return nil, err
    }

    return instance, nil
}
func (rDb *Database) setup() error {
    return rDb.Gorm.AutoMigrate(
        &User{},
        &CreditCard{},
    )
}

type User struct {
    gorm.Model
    Name        string        `gorm:"not null"`
    CreditCards []*CreditCard `gorm:"many2many:user_credit_cards;"`
}

type CreditCard struct {
    gorm.Model
    Number string `gorm:"not null"`
}

func main() {
    database, _ := NewDatabase("root:root@tcp(127.0.0.1:3306)/OrderManager?parseTime=true")
    var user = User{
        Name: "My username",
        CreditCards: []*CreditCard{
            {
                Model: gorm.Model{
                    ID: 1,
                },
            },
        },
    }
    database.Gorm.Create(&user)
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>