如果 GORM 中存在则 DropColumn

Yas*_*oel 0 go go-gorm

参考帮助文档,有一个删除表如果存在语法,db.DropTableIfExists(&User{}, "products")但对于db.Model(&User{}).DropColumn("description")DropColumnIfExists 不存在。我应该用什么来实现 DropColumn (如果该列存在,否则不存在。)

Moh*_*sin 6

我应该用什么来实现 DropColumn (如果该列存在,否则不存在。)

为了回答你的问题...

继续吧。您可以使用db.Model(&User{}).DropColumn("description")

只需优雅地处理错误即可。 请记住,在 Golang 中,错误是值

func main() {
    db.AutoMigrate(&User{})

    err := db.Model(&User{}).DropColumn("description").Error
    if err != nil {
        // Do whatever you want to do!
        log.Print("ERROR: We expect the description column to be 
drop-able")
    }
}
Run Code Online (Sandbox Code Playgroud)

在引擎盖下,如果没有错误,gorm 将执行原始 postgresql查询。否则,将返回错误