我是ORM(和GORM(的新手,如果这是一个明显的问题,我很抱歉,但文档中似乎没有涵盖。
我将使用文档中的示例作为我的问题的基础
问题1:属于
// `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
}
User
只属于一个Company
→这是由代码处理的以上- 一个
Company
有许多User
→这是代码所暗示的吗以上或者我应该在Company
中添加一个关系O2M吗
问题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
}
User
有1+CreditCard
→这是由代码处理的- 一个
CreditCard
可以属于几个用户(例如,一个共享家族CC(→这是隐含的吗(如果不是:如何建立O2M关系(
还是CreditCard
被显式配置为只属于一个用户
Q1:根据您定义结构的方式,您不需要在Company
结构中有明确的O2M关系,但在加载公司详细信息时,如果您想加载分配给该特定公司的所有用户,还需要添加该字段。它将需要一个额外的函数调用,如Preload
或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
}