这篇文章主要介绍了golang gorm更新日志执行SQL的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm更新日志执行SQL的方法文章都会有所收获,下面我们一起来看看吧。
1. 更新日志
1.1. v1.0
1.1.1. 破坏性变更
gorm.Open*gorm.DBgorm.DBBeforeSaveBeforeUpdatescope.SetColumnfunc (user *User) BeforeUpdate(scope *gorm.Scope) {
if pw, err := bcrypt.GenerateFromPassword(user.Password, 0); err == nil {
scope.SetColumn("EncryptedPassword", pw)
// user.EncryptedPassword = pw // 不工作,更新时不会包括EncryptedPassword字段
}
}deleted_at IS NULL之前它会检查deleted_at小于0001-01-02也排除空白时间,如:
SELECT * FROM users WHERE deleted_at IS NULL OR deleted_at <= '0001-01-02'
*time.TimeDeletedAtgorm.ModelSELECT * FROM users WHERE deleted_at IS NULL
gorm.Modeldeleted_atNULLimport (
"github.com/jinzhu/now"
)
func main() {
var models = []interface{}{&User{}, &Image{}}
for _, model := range models {
db.Unscoped().Model(model).Where("deleted_at < ?", now.MustParse("0001-01-02")).Update("deleted_at", gorm.Expr("NULL"))
}
}新的ToDBName逻辑
HTTPURIHTTPhttph_t_t_pSKUs_k_uRecordNotFoundErrRecordNotFoundmssql导入它用import _ "github.com/jinzhu/gorm/dialects/mssql"
Hstore已移至github.com/jinzhu/gorm/dialects/postgres
gorm执行sql
type Object interface {
GroupOrderOpenlog() (uidList []int)
}
func (o *object) GroupOrderOpenlog() {
type res struct {
Uid int `json:"uid"`
}
var re []res
sql:= "SELECT uid FROM order_openlog GROUP BY uid"
o.Db.Raw(sql).Scan(&re)
fmt.Println(re)
for _,k :=range re{
fmt.Println(k.Uid)
}
}关于“golang gorm更新日志执行SQL的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“golang gorm更新日志执行SQL的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。