1. 更新日志
1.1. v1.0
1.1.1. 破坏性变更
*gorm.DBgorm.DB
BeforeSaveBeforeUpdatescope.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.TimeDeletedAtgorm.Model
SELECT * FROM users WHERE deleted_at IS NULL
gorm.Modeldeleted_atNULL
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逻辑
HTTPURI
HTTPhttph_t_t_pSKUs_k_u
RecordNotFoundErrRecordNotFound
mssql
导入它用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)
}
}