为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
幕布斯6054654 2022-11-23 15:45:56
我是 ORM(和 GORM)的新手,如果这是一个明显的问题,我深表歉意,但文档似乎没有涵盖它。我将使用文档中的示例作为我的问题的基础问题一:属于// `User` belongs to `Company`, `CompanyID` is the foreign keytype 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 keytype User struct {  gorm.Model  CreditCards []CreditCard}type CreditCard struct {  gorm.Model  Number string  UserID uint}AUser有 1+ CreditCard→ 这由代码处理ACreditCard可以属于多个用户(比如,一个共享的家庭 CC)→是隐含的吗?(如果没有:如何建立 O2M 关系)。或者,它CreditCard是明确配置为仅属于一个用户的情况吗?
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

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

}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信