如何在使用 gorm 创建之前增加价值?
How to add value before create using gorm?
我有这个post.go
模型
package models
type Post struct {
Id uint `json:"ID"`
Name string `json:"Name"`
Message string `gorm:"type:text; index" json:"Message"`
Status string `gorm:"type:varchar(255); index" json:"Status"`
Desc string `gorm:"type:text; index" json:"Desc"`
}
func (p *Post) BeforeCreate() (err error) {
p.Status = "todo"
return nil
}
我需要在创建任何记录时默认将状态放入 todo
值
在我的控制器中:
config.DB.Model(&models.Post{}).Create(&posts)
结果是我在数据库中的状态中得到了一个空值
BeforeCreate
接口签名不正确应该是BeforeCreate(*gorm.DB) error
func (p *Post) BeforeCreate(tx *gorm.DB) (err error) {
p.Status = "todo"
return nil
}
另一种方法是将 default-values
添加到 post 结构
type Post struct {
Id uint `json:"ID"`
Name string `json:"Name"`
Message string `gorm:"type:text; index" json:"Message"`
Status string `gorm:"type:varchar(255); index; default: todo" json:"Status"`
Desc string `gorm:"type:text; index" json:"Desc"`
}
输出:
db.Create(&Post{}) // INSERT INTO `posts` (`name`,`message`,`status`,`desc`) VALUES ("","","todo","") RETURNING `id`
我有这个post.go
模型
package models
type Post struct {
Id uint `json:"ID"`
Name string `json:"Name"`
Message string `gorm:"type:text; index" json:"Message"`
Status string `gorm:"type:varchar(255); index" json:"Status"`
Desc string `gorm:"type:text; index" json:"Desc"`
}
func (p *Post) BeforeCreate() (err error) {
p.Status = "todo"
return nil
}
我需要在创建任何记录时默认将状态放入 todo
值
在我的控制器中:
config.DB.Model(&models.Post{}).Create(&posts)
结果是我在数据库中的状态中得到了一个空值
BeforeCreate
接口签名不正确应该是BeforeCreate(*gorm.DB) error
func (p *Post) BeforeCreate(tx *gorm.DB) (err error) {
p.Status = "todo"
return nil
}
另一种方法是将 default-values
添加到 post 结构
type Post struct {
Id uint `json:"ID"`
Name string `json:"Name"`
Message string `gorm:"type:text; index" json:"Message"`
Status string `gorm:"type:varchar(255); index; default: todo" json:"Status"`
Desc string `gorm:"type:text; index" json:"Desc"`
}
输出:
db.Create(&Post{}) // INSERT INTO `posts` (`name`,`message`,`status`,`desc`) VALUES ("","","todo","") RETURNING `id`