Has One
Has One 与另一个模型建立“一对一”的连接,但语义与 Belongs To 不同。通常,Has One 表示拥有方包含被拥有方的外键。
Wait, in Has One, the owner model does NOT contain the foreign key. The other model contains the foreign key pointing back to the owner.
例如,一个 User 拥有一张 CreditCard。 CreditCard 表中会有 UserID。
type User struct {
gorm.Model
CreditCard CreditCard
}
type CreditCard struct {
gorm.Model
Number string
UserID uint
}
外键
默认情况下,Has One 关系使用所有者类型的名称加上其主键作为外键名称。例如,CreditCard 模型,其外键默认为 UserID。
重写外键
type User struct {
gorm.Model
CreditCard CreditCard `gorm:"foreignKey:UserName"`
// CreditCard 表中需要有 UserName 字段
}
type CreditCard struct {
gorm.Model
Number string
UserName string
}
重写引用
type User struct {
gorm.Model
Name string `gorm:"index"`
CreditCard CreditCard `gorm:"foreignKey:UserName;references:Name"`
}
type CreditCard struct {
gorm.Model
Number string
UserName string
}