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

问题描述

做毕设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
官网文档这里

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值