英文:
GORM don't use underscores in tablenames
问题
我正在尝试将GORM与最初使用Django开发的数据库一起使用。
我遇到的问题是,Django创建的表遵循app_name_tablename的格式。我正在使用TablePrefix选项来添加app_name_部分,但我找不到一个选项来阻止GORM自动在名称中使用下划线。Gorm文档似乎没有提到删除这个下划线的选项。
显然,我可以在每个模型上手动定义表名,但我宁愿避免这样做。在Gorm配置中是否有一个选项可以自动完成这个操作?
英文:
I'm attempting to use GORM with a database originally developed with Django.
The issue I'm running into is that the tables created by Django follow the format app_name_tablename. I am using the TablePrefix option to add that app_name_ part, but I cannot find an option to prevent GORM from automatically using underscores in the name. The Gorm docs don't seem to reference an option to remove this underscore.
Obviously I can define the tablename manually on each of the models, however I'd rather avoiding doing this. Is there an option in the Gorm config to do this automatically?
答案1
得分: 1
你可以尝试使用NoLowerCase
选项。
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_", // 表名前缀,`User`的表名将变为`t_users`
SingularTable: true, // 使用单数表名,启用此选项后,`User`的表名将变为`user`
NoLowerCase: true, // 跳过名称的蛇形命名
NameReplacer: strings.NewReplacer("CID", "Cid"), // 在将结构体/字段名称转换为数据库名称之前,使用名称替换器更改名称
},
})
更多信息请参考:GORM 配置文档
英文:
You can try NoLowerCase
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_", // table name prefix, table for `User` would be `t_users`
SingularTable: true, // use singular table name, table for `User` would be `user` with this option enabled
NoLowerCase: true, // skip the snake_casing of names
NameReplacer: strings.NewReplacer("CID", "Cid"), // use name replacer to change struct/field name before convert it to db name
},
})
答案2
得分: 0
你可以在实体中实现TableName() string
函数,这将强制gorm使用该名称。
例如:
type OrganizationGroup struct {
Name string
}
func (o OrganizationGroup) TableName() string {
return "OrganizationGroups"
}
英文:
You can implement the TableName() string
function in your entity which will force gorm to use that name.
e.g:
type OrganizationGroup struct {
Name string
}
func (o OrganizationGroup) TableName() string {
return "OrganizationGroups"
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论