global.DB.SetupJoinTable()和AutoMigrate()的用法

221 阅读1分钟
package flag

import (
   "go_vue/global"
   "go_vue/models"
)

func Makemigrations() {
   var err error
   global.DB.SetupJoinTable(&models.UserModel{}, "CollectsModels", &models.UserCollectModel{})
   global.DB.SetupJoinTable(&models.MenuModel{}, "Banners", &models.MenuBannerModel{})
   err = global.DB.Set("gorm:table_options", "ENGINE=InnoDB").
      AutoMigrate(
         &models.BannerModel{},
         &models.TagModel{},
         &models.AdvertModel{},
         &models.UserModel{},
         &models.CommentModel{},
         &models.ArticleModel{},
         &models.MenuModel{},
         &models.MenuBannerModel{},
         &models.FadeBackModel{},
         &models.LoginDateModel{},
         &models.MessageModel{},
      )
   if err != nil {
      global.Log.Error("生成数据库表结构失败")
      return
   }
   global.Log.Info("生成数据库表结构成功")
}

上面这段代码通过调用 global.DB.SetupJoinTable() 方法设置了两个模型之间的关联表,分别是 UserModel 和 CollectsModels 之间的关联表以及 MenuModel 和 Banners 之间的关联表。 同时调用global.DB.Set() 方法设置了数据库表的选项,这里设置了表的引擎为InnoDB 调用 global.DB.AutoMigrate() 方法自动迁移数据库,根据提供的模型参数创建相应的数据库表。列出了要迁移的模型包括:BannerModelTagModelAdvertModelUserModelCommentModelArticleModelMenuModelMenuBannerModelFadeBackModelLoginDateModelMessageModel。这几个数据库,通过上面这个代码的完成可以去你对应的数据库查看到这些表都已经建立好了,同时相关的关联表也建立了。