在 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
}
}
我想在 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
}
}