【go】gorm中去掉默认表名后的s复数形式

【go】gorm中去掉默认表名后的s复数形式

背景
使用gorm时,查询数据时mysql报错,显示表名不存在,仔细查看,报错的表名中增加了s,比如实际数据库表名是:ali_user,报错信息中显示表 ali_users 不存在

原因
gorm默认使用结构体的复数形式作为表名
比如:

# 表结构体定义如下:
type AliUser struct{
	ID int64 `json:id`,
}

# 实际读取数据时,定义该类型的变量接收数据,报错,显示 ali_users表名不存在

解决
在model中增加显式定义表名,不使用gorm的隐式表名定义规则

# TableName 解决gorm表名映射
func (AliUser) TableName() string {
	return "ali_user"     # gorm中默认定义的表名是 ali_users,但其实数据库并没有这个表
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章