跳轉到內容

從 v1.10 升級到 v1.11

v1.11.3

Bug 修復 🐛

v1.11.2

Bug 修復 🐛

v1.11.1

令人興奮的新功能 🎉

Bug 修復 🐛

v1.11.0

令人興奮的新功能 🎉

功能增強 🚀

破壞性變化 🛠

Bug 修復 🐛

  • Hash 配置在某種情況下不生效的問題(1.11.0)
  • RateLimiter 非執行緒安全的問題(1.11.0)

升級指南

請根據本節內容,一步步進行框架升級。

預估升級時間:1 分鐘

1. 更新依賴

go.mod 文件中更新依賴:

go get -u github.com/goravel/framework@v1.11.0 && go mod tidy

2. 優化、移除廢棄的方法

import (
  "github.com/goravel/framework/database"
  "github.com/goravel/framework/database/gorm"
)

// 廢棄
database.NewGormInstance()
// 替換為(注:該方法未推薦使用,請盡量不用)
gorm.New()

// 廢棄
facades.Orm.Query().Updates()
// 替換為(只修改方法名即可,無需修改參數)
facades.Orm.Query().Update()

// Update 方法修改返回值
// 修改前
err := facades.Orm.Query().Update()
// 修改後
res, err := facades.Orm.Query().Update()

新增內容

本節內容不涉及到代碼修改,只是功能增強。

Orm 新增模型事件

版本: v1.11.1

Orm 模型觸發幾個事件,允許你掛接到模型生命週期的如下節點:RetrievedCreatingCreatedUpdatingUpdatedSavingSavedDeletingDeletedForceDeletingForceDeleted

詳見文檔

Cache 新增、優化方法

版本: v1.11.1

新增方法

方法名操作
Decrement遞減值
Increment遞增值
Lock原子鎖
Store訪問多個緩存存儲

優化方法

Get, GetBool, GetInt, GetInt64, GetString, Pull 方法不再需要傳遞默認值(向下兼容)。

Route 支持 Fallback 路由

版本: v1.11.1

你可以定義一個在沒有其他路由匹配傳入請求時將執行的路由。

go
facades.Route.Fallback(func(ctx http.Context) http.Response {
  return ctx.Response().String(404, "not found")
})

Orm 新增方法

版本: v1.11.1

方法名操作
db.Raw原生表達式
LockForUpdate悲觀鎖
SharedLock悲觀鎖

優化 facades.Config.Add() 方法

Version: v1.11.0

facades.Config.Add() 方法 configuration 參數由 map[string]any 修改為 any,使設置更靈活。

查看文檔

修改 Sqlite 驅動

因為 github.com/mattn/go-sqlite3 要求必須啟動 CGO,因此替換了一個不強制要求 CGO 的第三方包:github.com/glebarez/go-sqlite

contracts/http 增加 net/http 的 Method 映射

Version: v1.11.0

可以在 controller 中直接使用 http.MethodGet,而不需要再導入 net/http

詳見文件

Route 新增資源路由

版本: v1.11.1

go
facades.Route.Resource("/resource", resourceController)

詳見文件

Request 新增方法

版本: v1.11.1

方法名操作
All獲取所有輸入數據
Host獲取請求 Host
Queries獲取所有查詢字符串

即將廢棄 Form, Json 方法,請使用 Input 替代。

Storage 新增方法

版本: v1.11.1

方法名操作
LastModified獲取文件最後修改時間
MimeType獲取文件類型

File 新增方法

版本: v1.11.1

方法名作用
LastModified獲取文件最後修改時間
MimeType獲取文件類型
大小獲取文件大小

修復文件儲存 windows 路徑錯誤的問題

版本: v1.11.1

在 Windows 系統中有一個錯誤的斜線。

修復 Request 模組 Header panic 問題

版本: v1.11.1

ctx.Request().Header( key: "token") 將會 panic。

同時使用 Request.Input() 與 Request.Bind() 方法數據錯誤的問題

版本:v1.11.2

由於使用 Request.Input() 方法會清空 Request.Body,之後再使用 Request.Bind(),將無法正確獲取到數據。

Schedule 中 panic 導致進程中斷的問題

版本:v1.11.3

當 Schedule 中出現 panic,會導致進程中斷,影響所有定時任務。

Schedule 中 DailyAt 每分鐘都會執行的問題

版本:v1.11.3

修復 DailyAt 每分鐘都會執行的問題:

go
func (kernel *Kernel) Schedule() []schedule.Event {
  return []schedule.Event{
    facades.Schedule.Call(func() {
      fmt.Print("1")
    }).DailyAt("18:00"),
  }
}

基於 MIT 许可發佈