從 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 tidy2. 優化、移除廢棄的方法
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"),
}
}