登录
首页 >  Golang >  Go问答

在gorm中如何在创建之前自动添加值?

来源:stackoverflow

时间:2024-02-27 23:45:29 407浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在gorm中如何在创建之前自动添加值?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我有这个 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`

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在gorm中如何在创建之前自动添加值?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>