原因是,我 Struct 中定义了一个新字段,为了方便在接口返回数据时,能补充一个数据库中没有的信息。
这导致在 Gorm 插入 MySQL 时报错,提示未知字段错误。
插入时,忽略指定字段
查了一下,发现 Gorm 有个字段标签的功能,可以方便的忽略特定字段:
https://gorm.io/zh_CN/docs/models.html#%E5%AD%97%E6%AE%B5%E6%A0%87%E7%AD%BE
- 忽略该字段,- 无读写权限
甚至可以更细分的控制,读和写分别设置是否忽略。
例如:
type User struct {
Name string `gorm:"-"` // 通过 struct 读写会忽略该字段
}
Field: unsupported relations for schema MyTable
但是有个地方需要注意,例如下面这个 Struct (用户开卡信息,里面有个 Agent 字段,代表代理商信息,通过 Preload 获取)
type UserCard struct {
gorm.Model
UserId int // 客户 ID
Price float64 // 购买时的价格
AgentId int // 代理商 ID
Agent Agent `gorm:"-"` // 代理商信息。禁止写入是防止 insert 时报不存在字段的错误。
}
执行 Preload 时,报错:
Agent: unsupported relations for schema UserCard
原因是 Agent 被设置成了不可读/不可写。
需要改成只读:
Agent Agent `gorm:"->"`
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式