当前位置: 首页 > 面试题库 >

在Golang gorm中定义关联模型

慕光赫
2023-03-14
问题内容

我在RestFul服务中使用了golang gorm,但是,我现在怀疑这很简单,但找不到任何示例或特定文档,这对我来说并不明确。

假设我有表用户和语言,任何用户都可以有多种语言,任何语言都可以有许多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个表users_languages,并检查gorm,我发现必须使用多对多关系。

现在,我已经有了定义用户和语言表的结构,可以这样说:

type User struct {
    gorm.Model
    Languages         []Language `gorm:"many2many:user_languages;"`
}

type Language struct {
    gorm.Model
    Name string
}

然后,我运行迁移并创建了表User和Language。我的问题是,我该如何定义user_languages表的结构?外键如何设置?


问题答案:

我该如何定义user_languages表的结构?

你也应该描述user_languages为类似many2many关系模型User,并Language为例

type UserLanguages struct {
    gorm.Model
    UserId int
    LanguageId int
}

可能应该为UserLanguage模型定义主键

外键如何设置?

GORM会在自己的查询中以下划线格式(如user_idlanguage_id)生成外键名称,为重新定义外键,您可以AssociationForeignKey在模型字段上使用特殊注释,希望对您有所帮助!



 类似资料:
  • 关联是一个或多个模型之间的关系。 关联的类型: hasOne(多对一) hasMany(多对多) extendsTo(一对一)

  • 本文向大家介绍在SAP功能模块中的哪里定义关联类型?,包括了在SAP功能模块中的哪里定义关联类型?的使用技巧和注意事项,需要的朋友参考一下 您使用的参数似乎是导入类型,它将需要关联的类型才能使用。 您可以为此定义表参数。您可以在表格标签中找到它们。定义它们之后,便可以将它们用于导出或导入。 希望对你有帮助!

  • 通过预先确定好模型之间的关系,在业务开发中,使用非常简便的写法,就可以实现复杂的涉及多表数据增删改查。 这一切都是模型底层实现帮你在处理,在 imi 中,模型的关联关系都使用注解来定义。 注解 这里列出定义模型关联关系所需的注解,所有关联模型的注解,命名空间为Imi\Model\Annotation\Relation @OneToOne 一对一关系声明 用法: @OneToOne("模型类名")

  • Creating model relations(创建模型之间的关系) model 关系概念 使用slc loopback:relation 关联选项 范围 属性 invertProperties ?? 逆属性(?) 自定义范围方法 通过REST API 暴露关联对象的方法 model 关系概念 在工作中单个 model 比较好理解, 但是现实使用中 model 之间往往存在着各种关联。 当你在实

  • 你可能想把可选的属性分割到另一个表中。每个扩展都会是一个新的表,其中每一行的唯一标识符是主模型实例的id。 例如: var Person = db.define("person", { name : String }); var PersonAddress = Person.extendsTo("address", { street : String, number : N

  • hasMany 是多对多的关系(包括连接表)。 例如:Patient.hasMany('doctors', Doctor, { why: String }, { reverse: 'patients', key: true })。 病人可以拥有许多不同的医生。每个医生可以拥有许多不同的病人。 当你调用Patient.sync()时,会创建一个连接表patient_doctors。 列名称 类型 p