跳转到内容

从 v1.11 升级到 v1.12

v1.12.6

Bug 修复 🐛

v1.12.5

Bug 修复 🐛

v1.12.4

Bug 修复 🐛

v1.12.3

Bug 修复 🐛

v1.12.2

Bug 修复 🐛

v1.12.1

Bug 修复 🐛

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
// Before
app := foundation.Application{}

// After
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"
)

所有的 RegisterBoot 方法添加 app foundation.Application 输入参数:

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

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

5。 修改 app/config/app.go

修改导入:

go
// Before
"github.com/goravel/framework/contracts"

"providers": []contracts.ServiceProvider{

// After
"github.com/goravel/framework/contracts/foundation"

"providers": []foundation.ServiceProvider{

6。 修改 Artisan 命令中的 Flag(如果使用)

[]command.Flag 中添加 &command.StringFlag 类型:

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

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

7。 文件系统模块取消对 S3、OSS、COS、Minio 的默认支持

为了减少加载不必要的第三方包,减小包体积,提高编译效率,Goravel 将逐步将各模块驱动剥离为独立的扩展包。 在此次升级中,Filesystem 模块取消了对 S3OSSCOSMinio 驱动的默认支持,并将支持转移到独立的扩展包中。

移除 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。 缓存模块取消默认支持 Redis

如果您没有使用 Redis,请在 config/cache.go::stores 中删除 redis 键:

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

如果您正在使用 redis 驱动,请参考 redis 驱动文档进行安装:

驱动链接
Redishttps://github.com/goravel/redis

9。 更改模型中 CreatedAt、UpdatedAt 的类型(如果使用)

为了使 API 输出中的时间类型更加标准,ModelCreatedAtUpdatedAt 的类型从 time.Time 改为 carbon.DateTime。 如果您对这两个字段有额外的处理,可以通过 CreatedAt.ToStdTime() 方法获取原始的 time.Time 类型。

10。 优化验证模块的规则(如果使用)

检查原始验证规则中的零值,例如,如果规则设置为 date 且未设置 required,而字段为空或未传递,验证模块将提示该字段是必需的。 优化后,验证模块将通过检查,使用起来更加直观。 如果您正在使用相关验证,请确保升级后符合预期。

11。 重新安装依赖

运行 go mod tidy

功能介绍

服务容器

版本:v1.12.0

Goravel 中的所有服务都在服务容器中注册,为包开发提供强大支持,详情

包开发

版本:v1.12.0

包是向 Goravel 添加功能的主要方式,可以丰富 Goravel 的生态,详情

Artisan Flag 添加新方法

版本:v1.12.0

为 Artisan 模块添加获取不同类型 Flag 的方法,详情

添加辅助方法

版本:v1.12.0

添加 pathcarbon 辅助方法,您可以轻松获取路径信息并在项目中处理时间,详情

升级依赖

版本:v1.12.0

为了提供更好的功能支持,Goravel 依赖的所有包的版本都已升级。

迁移添加新方法

版本: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 命令自动创建文件夹时由反斜杠导致的崩溃问题。

The Problem Of facades.Gate() Return nil

版本:v1.12.2

修复 facades.Gate() 返回 nil 的问题。

Windows 下 make:package 命令的问题

版本:v1.12.3

在 Windows 下 make:package 命令创建的文件路径错误。

限流中间件抛出崩溃的问题

版本:v1.12.4

修复限流中间件抛出崩溃的问题。

修复 facades.Orm().Query().Load() 的问题

版本:v1.12.5

修复在某些情况下 facades.Orm().Query().Load() 无法正确加载模型的问题。

修复 JWT 问题

版本:v1.12.6

修复当 JWT Token 过期且无效时,返回过期错误,而预期应先返回无效错误的问题。

基于 MIT 许可发布