gorm 中如何每天创建新表?

yzhengwei · · 4337 次点击
```go type Daily struct { ID int64 `json:"id" gorm:"column:id;primaryKey"` Name string `json:"name" gorm:"column:name"` } // TodayName 今天的表名 func (d Daily) TodayName() func(*gorm.DB) *gorm.DB { return d.DateName(time.Now()) } // TomorrowName 明天的表名 func (d Daily) TomorrowName() func(*gorm.DB) *gorm.DB { date := time.Now().Add(24 * time.Hour) return d.DateName(date) } // DateName 根据时间生成对应的表名,表名规则:daily_yyyy_MM_dd func (Daily) DateName(date time.Time) func(*gorm.DB) *gorm.DB { return func(tx *gorm.DB) *gorm.DB { name := date.Format("daily_2006_01_02") return tx.Table(name) } } // 定时任务提前一天建好表 var daily1 Daily db.Scopes(daily1.TomorrowName()).AutoMigrate(&daily1) // 查询一条今日数据 var daily2 Daily db.Scopes(daily2.TodayName()).First(&daily2) ```
#4
更多评论
https://gorm.io/zh_CN/docs/conventions.html 实现Tabler接口即可,再搞个定时任务每天执行migrate
#1
把表结构创建语句导出sql,然后在定时任务中执行这个sql就行了呀 楼主的意思我明白,我个人认为工作就是完成任务,怎么简单怎么来
#2