跳轉到內容

從 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 輸出時更加標準,CreatedAtUpdatedAt 的類型由 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

新增 pathcarbon 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 许可發佈