GORM Belongs To 和 Has One

GORM Belongs To 和 Has One

在 GORM 中,Belongs ToHas One 是两种不同的关系类型,用于表示模型之间的关联。它们之间的区别如下:

Belongs To:

  1. 关系方向Belongs To 关系表示一个模型属于另一个模型。这意味着一个模型(子模型)包含一个外键字段,指向另一个模型(父模型)的主键。

  2. 外键位置:在 Belongs To 关系中,外键位于子模型中,指向父模型的主键。

  3. 示例:假设 Order 模型和 User 模型之间有 Belongs To 关系。在这种情况下,Order 模型将包含一个 UserID 外键字段,指向 User 模型的 ID 字段。

    type Order struct {
        ID      uint
        UserID  uint    // 外键,指向 User 模型的 ID
        User    User    // 关系
        Amount  float64
    }
    
    type User struct {
        ID    uint
        Name  string
    }
    

Has One:

  1. 关系方向Has One 关系表示一个模型拥有另一个模型。这意味着一个模型(父模型)拥有一个与之关联的另一个模型(子模型)。

  2. 外键位置:在 Has One 关系中,外键位于子模型中,指向父模型的主键。

  3. 示例:假设 User 模型和 Profile 模型之间有 Has One 关系。在这种情况下,Profile 模型将包含一个 UserID 外键字段,指向 User 模型的 ID 字段。

    type User struct {
        ID      uint
        Name    string
        Profile Profile `gorm:"foreignKey:UserID"` // 关系
    }
    
    type Profile struct {
        ID     uint
        UserID uint  // 外键,指向 User 模型的 ID
        Age    int
    }
    

Belongs ToHas One 的区别主要在于关系的方向和外键的位置。在 Belongs To 关系中,子模型包含外键,指向父模型的主键。而在 Has One 关系中,父模型通过关联的子模型拥有一个与之关联的模型。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值