Golang+Gorm库使用踩坑——未标识primarykey导致创建后无法返回修改

发布时间:2024年01月15日

问题描述

做毕设ing,基本的增删改查。
这里是一个需要增的地方,代码如下:


func (BI *BlogImpl) CreateBlog(ctx context.Context, blogInformation repo.BlogInformation) (repo.BlogInformation, error) {

	err := BI.Db.Table(BlogTable).Create(&blogInformation).Error
	fmt.Println(blogInformation.Bid, "createBlog")
	if err != nil {
		return repo.BlogInformation{}, err
	}
	return blogInformation, nil
}

我在外层调用时候,是需要返回新增记录的ID。但是无法符合预期。通过打印发现,我这里返回的id就是0。

问题解决

翻阅之前写的一个正确样例,对比发现


type BlogInformation struct {
	Bid       int       `gorm:"column:bid"`
	
}

区别在于,我这里没有去指定主键。

根据官方文档,其demo中提到:

创建记录
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}

result := db.Create(&user) // 通过数据的指针来创建

user.ID             // 返回插入数据的主键
result.Error        // 返回 error
result.RowsAffected // 返回插入记录的条数

这个修改需要主键,所以应该在gorm指定一下。

参考资料

https://gorm.io/zh_CN/docs/create.html
官网文档这里

文章来源:https://blog.csdn.net/Ws_Te47/article/details/135591859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。