在 GORM v1 中,如果只设置 foreignkey,则它将不会被使用。必须同时设置 foreignkeyassociation_foreignkey 才能使其生效。

例如,假设我们有一个 User 模型和一个 Role 模型,它们是多对多关系。我们可以在 User 模型中设置 Roles 字段来表示此关系:

type User struct {
    ID    uint
    Name  string
    Roles []Role `gorm:"many2many:user_roles;"`
}

type Role struct {
    ID   uint
    Name string
}

在上面的代码中,我们没有指定 foreignkeyassociation_foreignkey,因此 GORM 尝试使用默认的外键名称。但是,这可能不会按照我们的预期工作,因此我们需要显式指定外键名称:

type User struct {
    ID    uint
    Name  string
    Roles []Role `gorm:"many2many:user_roles;foreignkey:user_id;association_foreignkey:role_id"`
}

type Role struct {
    ID   uint
    Name string
}

在上面的代码中,我们使用 foreignkey:user_idassociation_foreignkey:role_id 来显式指定外键名称。这将确保我们使用正确的外键名称,并使关系正常工作。

gorm v1 设置 foreignkey无效设置 foreignkey和association_foreignkey就生效

原文地址: https://www.cveoy.top/t/topic/EgD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录