我应该明确地创建一个与“属于”或“有很多”对称的关系吗?

我是 ORM(和 GORM)的新手,如果这是一个明显的问题,我深表歉意,但文档似乎没有涵盖它。


我将使用文档中的示例作为我的问题的基础


问题一:属于

// `User` belongs to `Company`, `CompanyID` is the foreign key

type User struct {

  gorm.Model

  Name      string

  CompanyID int

  Company   Company

}


type Company struct {

  ID   int

  Name string

}

A只User属于一个Company→ 这由上面的代码处理

ACompany有很多User→上面的代码暗示了这一点吗?或者我应该以某种方式添加 O2M 关系Company吗?

问题2:有很多

// User has many CreditCards, UserID is the foreign key

type User struct {

  gorm.Model

  CreditCards []CreditCard

}


type CreditCard struct {

  gorm.Model

  Number string

  UserID uint

}

AUser有 1+ CreditCard→ 这由代码处理

ACreditCard可以属于多个用户(比如,一个共享的家庭 CC)→是隐含的吗?(如果没有:如何建立 O2M 关系)。

或者,它CreditCard是明确配置为仅属于一个用户的情况吗?


幕布斯6054654
浏览 116回答 1
1回答

慕沐林林

Q1: 根据您定义结构的方式,结构中不需要明确的 O2M 关系Company,但是在加载公司详细信息时,如果要加载分配给该特定公司的所有用户,则需要添加该字段以及。它将需要一个额外的函数调用,例如Preloador Joins,但您不需要明确定义这种关系。type Company struct {  ID   int  Name string  Users []User}Q2:现在定义关系的方式,它被配置CreditCard为只属于一个用户。如果你想要一个多对多的关系,你需要指定关系表。这里有更多关于它的文档,但它应该看起来像这样:type User struct {  gorm.Model  CreditCards []CreditCard `gorm:"many2many:users_creditcards"`}type CreditCard struct {  gorm.Model  Number string}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go