在 GORM 第一次迁移时插入种子数据

Insert seed data at the first time of migration in GORM

我想在 AutoMigrate 在数据库中创建 table 时插入种子数据。

当我执行db.AutoMigrate(&User{})时,它没有return任何与table创建相关的信息,所以我无法确认table已经创建、已更新或什么都不做。

有没有办法知道GORM的table创建信息来插入种子数据?

这样我就可以像这样插入种子数据:

if err = db.AutoMigrate(&User{}); err != nil {
    if db.CreatedFirstTime {
        //Insert seed data
    }
}

根据 docs,您无法从 db.AutoMigrate(&User{}) 获取 table 创建信息。尝试将 Migrator 与查询组合使用以获取 table 的信息。

例如:

if err = db.AutoMigrate(&User{}); err == nil && db.Migrator().HasTable(&User{}) {
    if err := db.First(&User{}).Error; errors.Is(err, gorm.ErrRecordNotFound) {
        //Insert seed data
    }
}