從 v1.10 升級到 v1.11
v1.11.3
Bug 修復 🐛
v1.11.2
Bug 修復 🐛
v1.11.1
令人興奮的新功能 🎉
Bug 修復 🐛
v1.11.0
令人興奮的新功能 🎉
功能增強 🚀
- Cache 新增、優化方法(1.11.0)
- Route 支持 Fallback 路由(1.11.0)
- Orm 新增方法(1.11.0)
- 優化 facades.Config.Add() 方法(1.11.0)
- 修改 Sqlite 驅動(1.11.0)
- contracts/http 增加 net/http 的 Method 映射(1.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 模型觸發幾個事件,允許你掛接到模型生命週期的如下節點:Retrieved
、Creating
、Created
、Updating
、Updated
、Saving
、Saved
、Deleting
、Deleted
、ForceDeleting
、ForceDeleted
。
Cache 新增、優化方法
版本: v1.11.1
新增方法
方法名 | 操作 |
---|---|
Decrement | 遞減值 |
Increment | 遞增值 |
Lock | 原子鎖 |
Store | 訪問多個緩存存儲 |
優化方法
Get
, GetBool
, GetInt
, GetInt64
, GetString
, Pull
方法不再需要傳遞默認值(向下兼容)。
Route 支持 Fallback 路由
版本: v1.11.1
你可以定義一個在沒有其他路由匹配傳入請求時將執行的路由。
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
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
每分鐘都會執行的問題:
func (kernel *Kernel) Schedule() []schedule.Event {
return []schedule.Event{
facades.Schedule.Call(func() {
fmt.Print("1")
}).DailyAt("18:00"),
}
}