ZBLOG

gin 一对多,多对一默认模型关联规则

在GORM中,默认的一对多和多对一模型关联规则如下:

  • 一对多:在“多”方定义外键字段,例如Article模型中的UserID字段。
  • 多对一:在“多”方使用BelongsTo函数指定关联模型,例如Article模型中的BelongsTo函数指向User模型。

这些规则适用于大多数情况,但如果您需要更灵活的规则,则可以使用GORM提供的其他关联选项进行自定义。以下是一个示例:

  1. type User struct {
  2. gorm.Model
  3. Name string
  4. Email string
  5. Articles []Article `gorm:"foreignKey:AuthorID"`
  6. }
  7. type Article struct {
  8. gorm.Model
  9. Title string
  10. Content string
  11. AuthorID uint // 外键,指向User表中的ID字段
  12. }
  13. func main() {
  14. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  15. if err != nil {
  16. panic("failed to connect database")
  17. }
  18. db.AutoMigrate(&User{}, &Article{})
  19. r := gin.Default()
  20. r.GET("/users/:id", func(c *gin.Context) {
  21. var user User
  22. result := db.Preload("Articles").First(&user, c.Param("id"))
  23. if result.Error != nil {
  24. c.JSON(500, gin.H{"error": result.Error.Error()})
  25. return
  26. }
  27. c.JSON(200, user)
  28. })
  29. r.Run()
  30. }

在这个例子中,我们将外键从默认的UserID改为AuthorID,并在User结构体中使用了gorm:"foreignKey:AuthorID"来告诉GORM使用这个字段作为外键。这样,在Article模型中定义外键的时候,就需要指定AuthorID而不是UserID了。

需要注意的是,虽然我们在User结构体中使用了gorm:"foreignKey:AuthorID"来自定义关联规则,但仍然需要在Article结构体中使用BelongsTo函数来指向User模型。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5171

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?