跳轉到內容

從 v1.11 升級到 v1.12 ​

v1.12.6 ​

錯誤修復 🐛 ​

v1.12.5 ​

錯誤修復 🐛 ​

v1.12.4 ​

錯誤修復 🐛 ​

v1.12.3 ​

錯誤修復 🐛 ​

v1.12.2 ​

錯誤修復 🐛 ​

v1.12.1 ​

錯誤修復 🐛 ​

v1.12.0 ​

令人興奮的新功能 🎉 ​

功能增強 🚀 ​

破壞性變化 🛠 ​

升級指南 ​

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

預計升級時間:30 分鐘

1. 更新依賴 ​

在 go.mod 文件中更新依賴:

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

go mod tidy 將會拋出一個錯誤,執行完下面升級步驟即可解決。

2. 修改 bootstrap/app.go ​

go
// 修改前
app := foundation.Application{}

// 修改後
app := foundation.NewApplication()

3. 修改 facades.* ​

修改前修改後
facades.Artisanfacades.Artisan()
facades.Authfacades.Auth()
facades.Cachefacades.Cache()
facades.Configfacades.Config()
facades.Cryptfacades.Crypt()
facades.Eventfacades.Event()
facades.Gatefacades.Gate()
facades.Grpcfacades.Grpc()
facades.Hashfacades.Hash()
facades.Logfacades.Log()
facades.Mailfacades.Mail()
facades.Ormfacades.Orm()
facades.Queuefacades.Queue()
facades.RateLimiterfacades.RateLimiter()
facades.Routefacades.Route()
facades.Schedulefacades.Schedule()
facades.Storagefacades.Storage()
facades.Validationfacades.Validation()

4. 修改 app/providers/* ​

所有檔案增加導入:

go
import (
  "github.com/goravel/framework/contracts/foundation"
)

所有 Register, Boot 方法增加 app foundation.Application 入參:

go
func (receiver *AppServiceProvider) Register(app foundation.Application) {}

func (receiver *AppServiceProvider) Boot(app foundation.Application) {}

5. 修改 app/config/app.go ​

修改導入:

go
// 修改前
"github.com/goravel/framework/contracts"

"providers": []contracts.ServiceProvider{

// 修改後
"github.com/goravel/framework/contracts/foundation"

"providers": []foundation.ServiceProvider{

6. 修改 Artisan 命令中的 Flag(如果用到) ​

為 []command.Flag 中的項增加 &command.StringFlag 類型:

go
// 修改前
func (receiver *VendorPublishCommand) Extend() command.Extend {
  return command.Extend{
    Category: "test",
    Flags: []command.Flag{
      {
        Name: "test",
      },
    },
  }
}

// 修改後
func (receiver *VendorPublishCommand) Extend() command.Extend {
  return command.Extend{
    Category: "test",
    Flags: []command.Flag{
      &command.StringFlag{
        Name: "test",
      },
    },
  }
}

7. Filesystem 模塊取消對 S3, OSS, COS, Minio 驅動的默認支持 ​

為減少加載不必要的第三方包,減小打包體積,提高編譯效率,Goravel 將逐步剝離各模組驅動到獨立擴展包。 本次升級 Filesystem 模組取消對 S3, OSS, COS, Minio 驅動的默認支持,轉由獨立擴展包提供支持。 在此次升級中,Filesystem 模組取消對 S3, OSS, COS, Minio 驅動的默認支持,並轉移支持至獨立擴展包。

刪除 config/filesystems.go::disks 中除 local 和正在使用的驅動以外的鍵:

go
// 修改後
"disks": map[string]any{
  "local": map[string]any{
    "driver": "local",
    "root":   "storage/app",
    "url":    config.Env("APP_URL", "").(string) + "/storage",
  },
},

如果你用到了 local 以外的驅動,請參考對應驅動文檔進行安裝:

驅動鏈接
S3https://github.com/goravel/s3
OSShttps://github.com/goravel/oss
COShttps://github.com/goravel/cos
Miniohttps://github.com/goravel/minio

8. Cache 模塊取消對 Redis 驅動的默認支持 ​

如果你沒有使用 redis 驅動,刪除 config/cache.go::stores 中的 redis 鍵:

go
// 修改後
"stores": map[string]any{
  "memory": map[string]any{
    "driver": "memory",
  },
},

如果你用到了 redis 驅動,請參考文檔進行安裝:

驅動連結
Redishttps://github.com/goravel/redis

9. 修改 Model 中 CreatedAt, UpdatedAt 的類型 ​

為了使時間類型在 API 輸出時更加標準,CreatedAt、UpdatedAt 的類型由 time.Time 修改為 carbon.DateTime. 如果你對這兩個欄位進行了額外處理,可以通過 CreatedAt.ToStdTime() 方法獲取原有的 time.Time 類型。

10. 優化 Validation 模塊的校驗規則 ​

檢查原有校驗規則中的零值,例如,若規則設置為 date 且未設置 required,若該欄位為空或未傳入,校驗模塊將提示該欄位為必填。 優化後,校驗模塊會通過檢查,更符合使用直覺。 如果你用到了相關校驗,請確保升級後與預期一致。

11. 再次安裝依賴 ​

運行 go mod tidy

功能介紹 ​

服務容器 ​

版本:v1.12.0

Goravel 中所有服務都註冊到服務容器當中,為第三方包的開發提供有力的支持,詳見文檔。

擴展包開發 ​

版本:v1.12.0

包是向 Goravel 添加功能的主要方式,可以使 Goravel 的生態更加豐富,詳見文檔。

Artisan Flag 新增方法 ​

版本:v1.12.0

為 Artisan 模塊新增獲取不同類型 Flag 的方法,詳見文檔

新增 Helpers 方法 ​

版本:v1.12.0

新增 path 和 carbon Helpers 方法,您可以輕鬆獲取項目的路徑信息並處理時間,詳見文檔。

升級依賴 ​

版本:v1.12.0

為提供更好的功能支持,升級了 Goravel 依賴的所有包的版本。

Migration 新增命令 ​

版本:v1.12.0

命令操作
migrate:fresh刪除所有表並重新運行所有遷移
migrate:refresh回滾所有遷移並重新運行所有遷移
migrate:reset回滾所有資料庫遷移
migrate:status查詢遷移狀態

部分 make 命令支持子文件夾 ​

版本:v1.12.0

命令生成文件
make:policy User/AuthPolicyapp/policies/User/auth_policy.go
make:command Goravel/CleanCacheapp/console/commands/Goravel/clean_cache.go
make:model User/Phoneapp/models/User/phone.go
make:observer User/PhoneObserverapp/observers/User/phone_observer.go
make:event User/GoravelEventapp/events/User/goravel_event.go
make:listener User/GoravelListenapp/listeners/User/goravel_listen.go
make:controller User/AuthControllerapp/http/controllers/User/auth_controller.go
make:middleware User/Authapp/http/middleware/User/auth.go
make:request User/Authapp/http/requests/User/auth.go
make:job Goravel/Jobapp/jobs/Goravel/job.go
make:rule User/Phoneapp/rules/User/phone.go

Windows 下因文件路徑引發 panic 的問題 ​

版本:v1.12.1

修復 Windows 下,make 命令自動創建文件夾時,由於反斜杠引發 panic 的問題。

facades.Gate() 返回 nil 的問題 ​

版本:v1.12.2

修復 facades.Gate() 返回 nil 的問題。

Windows 下 make:package 命令的問題 ​

版本:v1.12.3

修復 Windows 下 make:package 命令創建的文件中的路徑錯誤的問題。

throttle 中間件 panic 的問題 ​

版本:v1.12.4

修復 throttle 中間件 panic 的問題。

修復 facades.Orm().Query().Load() 的問題 ​

版本:v1.12.5

修復 facades.Orm().Query().Load() 某種情況下無法正確加載模型的問題。

修復 JWT 的問題 ​

版本:v1.12.6

修復 JWT Token 過期且無效時,返回過期錯誤的問題,預期優先返回無效錯誤。

基於 MIT 许可發佈