无法通过内置方法添加列和创建用户

Cannot add column and create user by built-in method

我正在尝试使用数据库。我被推荐使用 Gorm,但是,它很烦人,因为有些方法不起作用。

对于模型我有:

type UserModel struct {
    first_name string
    last_name string
}

这是我的示例代码及其结果。

下面的代码有效,但在我的数据库中 table 名称是 user_models

 db.Migrator().CreateTable(&UserModel{})

以下代码无效

err := db.Migrator().AddColumn(&UserModel{}, "first_name")

failed to look up field with name: first_name

我试过这个并且有效

db.Exec("ALTER TABLE user_models ADD first_name varchar(64);")

另一个不工作

user := UserModel{first_name: "Jinzhu", last_name: "name"}

Not error but insert first_name:null and last_name:null

最后,有什么可以帮我解决这些问题的吗?

您的两个字段“first_name”和“last_name”(两者都不遵循 Go 的命名建议)未导出,因为它们以小写字母开头。这意味着 Gorm 不会关注这些字段。

我推荐以下内容,它将使用 Gorm 推荐的结构标签实现您想要的字段名称:

type UserModel struct {
    FirstName string `gorm:"column:first_name"`
    LastName string `gorm:"column:last_name"`
}

有关详细信息,请参阅 https://gorm.io/docs/models.html#Conventions