无法通过内置方法添加列和创建用户
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。
我正在尝试使用数据库。我被推荐使用 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。