如何访问gorm.Model.ID?
How to access 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})
unknown field 'ID' in struct literal of type
github.com/NlaakStudios/PASIT/models".Address
而且,这不起作用,给我一个错误:
c.Ctx.DB.Delete(&models.Address{gorm.Model.ID: id})
invalid field name gorm.Model.ID in struct initializer id int
如果我删除 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
}
如何访问这四个基本字段?
你在最后一个例子中非常接近。如果您 want/need ,则可以从您的结构中删除 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
我处理过这个:删除包名称 'gorm'
c.Ctx.DB.Delete(&models.Address{Model: gorm.Model{ID: id}})
看起来这是一个有趣的问题 - 但属于类别 'selfmade problem':
怎么样
c.Ctx.DB.Delete(&model.Address{}, id)
那么您可以保留 gorm.Model
的好处(或不保留 - 取决于口味)
所以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})
unknown field 'ID' in struct literal of type github.com/NlaakStudios/PASIT/models".Address
而且,这不起作用,给我一个错误:
c.Ctx.DB.Delete(&models.Address{gorm.Model.ID: id})
invalid field name gorm.Model.ID in struct initializer id int
如果我删除 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
}
如何访问这四个基本字段?
你在最后一个例子中非常接近。如果您 want/need ,则可以从您的结构中删除 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
我处理过这个:删除包名称 'gorm'
c.Ctx.DB.Delete(&models.Address{Model: gorm.Model{ID: id}})
看起来这是一个有趣的问题 - 但属于类别 'selfmade problem':
怎么样
c.Ctx.DB.Delete(&model.Address{}, id)
那么您可以保留 gorm.Model
的好处(或不保留 - 取决于口味)