gorm 注意点归纳 0值更新

1. scan 和 find

软删除的scan 也可以查出来。一般不用scan

2. 事务提交 注意在事务提交之前不应该return

// 该写法有错误,return 导致事务没有提交,在else 也应该存在 Rollback
status := 1
tx := db.Begin()
if status == 1 {
  // 做一些操作
tx.Rollback()
}else{
return 
}
tx.commit()

3. save 虽然可以insert 或者update 。但是 update会把空值也更新进去。所以更新还是用update 

4. gorm 0值更新问题

type CompanyRelation struct {
	gorm.Model
	RegularCheck   *int8     `json:"regular_check"`   //  0否 1是
}

type CompanyRelationData struct {
	gorm.Model
	RegularCheck   *int8     `json:"regular_check"`   //  0否 1是
}

// 假设表名为 company_relation
b:=0

data := CompanyRelation{
RegularCheck   :b,
}

data2 := CompanyRelation{
RegularCheck   :&b,
}
db.Model(&CompanyRelation{}).updates(data)   // 会更新
db.Model(&CompanyRelation{}).updates(data2)  // 不会更新
// 结论 定义结构体时,如有0值更新需要,则需要 把表结构体的字段改为指针
// 另外
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值