这篇文章主要介绍了golang gORM更新日志执行sql的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang gorm更新日志执行SQL的方法文章都会有所收获,下面我们一起来看
这篇文章主要介绍了golang gORM更新日志执行sql的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang gorm更新日志执行SQL的方法文章都会有所收获,下面我们一起来看看吧。
gorm.Open
返回类型为*gorm.DB
而不是gorm.DB
更新只会更新更改的字段
大多数应用程序不会受到影响,只有当您更改回调中的更新值(如BeforeSave
,BeforeUpdate
)时,应该使用scope.SetColumn
,例如:
func (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.Time
作为模型的DeletedAt
,它已经被gorm.Model
使用了,所以SQL就足够了
SELECT * FROM users WHERE deleted_at IS NULL
所以如果你使用gorm.Model
,那么你是好的,没有什么需要改变,只要确保所有记录的空白时间为deleted_at
设置为NULL
,示例迁移脚本:
import ( "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逻辑
在GORM将struct,Field的名称转换为db名称之前,只有那些来自golint的常见初始化(如Http
,URI
)是特殊处理的。
所以字段HTTP
的数据库名称将是http
而不是h_t_t_p
,但是一些其他的初始化,如SKU
不在golint,它的数据库名称将是s_k_u
,这看起来很丑陋,这个版本固定这个,任何大写的初始化应该正确转换。
错误RecordNotFound
已重命名为ErrRecordNotFound
mssql
驱动程序已从默认驱动程序中删除,
导入它用import _ "github.com/jinzhu/gorm/dialects/mssql"
Hstore已移至github.com/jinzhu/gorm/dialects/postgres
type Object interface { GroupOrderOpenlog() (uidList []int)}func (o *object) GroupOrderOpenlog() {type res struct {Uid int `JSON:"uid"`}var re []ressql:= "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的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网GO频道。
--结束END--
本文标题: golang gorm更新日志执行SQL的方法
本文链接: https://lsjlt.com/news/327277.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0