91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang?gorm更新日志執行SQL的方法

發布時間:2022-04-16 09:16:26 來源:億速云 閱讀:182 作者:iii 欄目:開發技術

這篇文章主要介紹了golang gorm更新日志執行SQL的方法的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇golang gorm更新日志執行SQL的方法文章都會有所收獲,下面我們一起來看看吧。

1. 更新日志

1.1. v1.0

1.1.1. 破壞性變更

  • gorm.Open返回類型為*gorm.DB而不是gorm.DB

  • 更新只會更新更改的字段

大多數應用程序不會受到影響,只有當您更改回調中的更新值(如BeforeSaveBeforeUpdate)時,應該使用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的常見初始化(如HTTPURI)是特殊處理的。

所以字段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

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的方法”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广州市| 东明县| 色达县| 清新县| 平罗县| 庆安县| 磐安县| 安达市| 洛宁县| 上犹县| 蛟河市| 陕西省| 东阿县| 黔南| 会昌县| 屏东县| 无棣县| 吴旗县| 宿州市| 宜宾县| 正镶白旗| 遂宁市| 米林县| 新营市| 乐亭县| 西丰县| 惠来县| 松滋市| 大庆市| 鄂尔多斯市| 宝山区| 兴隆县| 车险| 澄迈县| 长治市| 玉门市| 隆子县| 资兴市| 黑龙江省| 张家川| 洛川县|