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值更新需要,则需要 把表结构体的字段改为指针
// 另外