go - 如何访问gorm.Model.ID?
问题描述
所以 gorm.Model 提供了一些基础属性或字段:
ID uint `json:"-" gorm:"primary_key"`
CreatedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"`
DeletedAt *time.Time `json:"-" sql:"index"`
你可以这样使用它
type User struct {
gorm.Model
Name string
Email string `gorm:"type:varchar(100);unique_index"`
Role string `gorm:"size:255"` // set field size to 255
}
因此,当我在我的模型控制器上工作以进行删除(或任何我需要比较 ID 的地方)时
这不起作用,给我一个错误:
c.Ctx.DB.Delete(&models.Address{ID: id})
github.com/NlaakStudios/PASIT/models 类型的结构文字中的未知字段“ID”。地址
而且,这不起作用,给我一个错误:
c.Ctx.DB.Delete(&models.Address{gorm.Model.ID: id})
struct initializer id int 中的无效字段名称 gorm.Model.ID
如果我删除 gorm.Model 并在每个模型中自己定义字段......它就可以工作。
type User struct {
ID uint `json:"-" gorm:"primary_key"`
CreatedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"`
DeletedAt *time.Time `json:"-" sql:"index"`
Name string
Email string `gorm:"type:varchar(100);unique_index"`
Role string `gorm:"size:255"` // set field size to 255
}
如何访问这四个基本字段?
解决方案
你在最后一个例子中非常接近。如果你想要/需要,你可以从你的结构中删除gorm.Model
继承(为了清楚起见,我个人这样做),但要访问该值,你只需要多构建你的结构。例如...
type Address struct {
gorm.Model
Name string
Email string `gorm:"type:varchar(100);unique_index"`
Role string `gorm:"size:255"` // set field size to 255
}
c.Ctx.DB.Delete(&models.Address{gorm.Model: gorm.Model{ID: id}})
试一试,看看它是否适合你。或者在不继承的情况下恢复为您的方法gorm.Model
推荐阅读
- javascript - js奇怪行为数组解构
- javascript - Angular 5 嵌套返回
- botframework - Skype 响应语言参数
- c# - 异步运行回调函数
- jquery - jQuery-Ajax 为 xhr.getResponseHeader("Location") 获取 null
- jquery - 在html中从表中打印特定行
- jquery - 删除引导多选属性并启用单选
- swift - 在 Swift 中与 UIActivityViewController 共享字典
- xslt - 所有节点的 XSLT MUENCHIAN 方法
- sybase - 查询 ASE DB 锁和锁的持有时间