Has One
在一个 has one
关联中,其也与另一个 model 建立了一对一关系,但它和一对一关系有不同的语义(及结果)。 Has one 表示:model 的每一个示例都包含或拥有另一个 model 的示例。
例如,你的应用包含了用户和信用卡,并且每个用户只能有一张信用卡。
// User 只能有一张信用卡 (CreditCard), CreditCardID 是外键 |
外键
Foreign Key,在 has one
关系中,被拥有 model 必须存在一个外键字段,用于保存所属 model 的主键。
外键名通常使用 has one
拥有者 model 的类型加 主键
生成,对于上面的例子,其外键名为 UserID
.
当你为用户关联信用卡时,信用卡会保存用户的 ID
到它的 UserID
字段。
如果你想使用另一个字段来记录该关系,您可以通过标签 foreignkey
来改变它, 例如:
type CreditCard struct { |
关联外键
默认情况下,在 has one
关系中,被拥有 model 会使用其外键,保存拥有者 model 的主键,您可以更改保存至另一个字段,例如下面例子中的 Name
.
type CreditCard struct { |
多态关联
Polymorphism Association,Gorm 支持 has many
和 has one
的多态关联。
type Cat struct { |
注意:many-to-many 明确的不支持多态关联,如果使用会抛出错误。
Has One 的使用
你可以通过 Related
使用 has one
关联。
var card CreditCard |
高级用法请参阅 关联模式