登录
首页 >  Golang >  Go问答

如何禁用 GORM 中的自动字段重命名功能?

来源:stackoverflow

时间:2024-03-07 23:39:25 332浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《如何禁用 GORM 中的自动字段重命名功能?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我计划将 gorm 与现有数据库一起使用,因此我正在为其创建一些模型。然而,我有一个问题 - gorm 自动将所有列重命名为小写蛇形字母。我真的不需要它,因为我使用的数据库并不真正使用这样的名称。我发现我可以使用标签

`gorm:"column_name:`

为了防止我的专栏被重命名。然而,这对我来说似乎并不是一个可行的解决方案,因为我有一堆带有大量列的模型。有什么方法可以关闭 gorm 的“重命名”策略,或者自动向我的所有模型添加标签吗?

我的模型看起来像这样:

type FOOD_DES struct {
NDB_NO string `gorm:"primary_key"`
FdGrp_Cd FD_GROUP
Long_Desc string
Shrt_Desc string
ComName string
ManufacName string
Survey string
Ref_desc string
Refuse float32
SciName string
N_Factor float32
Pro_Factor float32
Fat_Factor float32
CHO_Factor float32
}

解决方案


来自doc

gorm 允许用户通过覆盖来更改命名约定 默认namingstrategy,需要实现namer接口

type namer interface {
  tablename(table string) string
  columnname(table, column string) string
  jointablename(table string) string
  relationshipfkname(relationship) string
  checkername(table, column string) string
  indexname(table, column string) string
}

所以只需实现接口namer即可。

在旧版本中,你可以这样做(Ref

gorm.AddNamingStrategy(&gorm.NamingStrategy{
    DB: func(name string) string {
        return name
    },
    Table: func(name string) string {
        return name
    },
    Column: func(name string) string {
        return name
    },
})

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>