从 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
令人兴奋的新功能 🎉
增强功能 🚀
破坏性变更 🛠
- 修改Facades的调用方式(1.12.0)
- 优化Artisan标志(1.12.0)
- 文件系统模块取消对S3、OSS、COS、Minio的默认支持
- 缓存模块取消对Redis的默认支持
- 更改模型中CreatedAt、UpdatedAt的类型
- 优化验证模块的规则
升级指南
请按照本节内容逐步升级框架。
预计升级时间:30分钟
1。 更新依赖
更新go.mod
文件中的依赖:
go get -u github.com/goravel/framework@v1.12.0 && go mod tidy
运行 go mod tidy
后出现错误,完成以下升级步骤后将解决该错误。
2。 修改 bootstrap/app.go
// Before
app := foundation.Application{}
// After
app := foundation.NewApplication()
3。 修改 facades.*
修改前 | 修改后 |
---|---|
facades.Artisan | facades.Artisan() |
facades.Auth | facades.Auth() |
facades.Cache | facades.Cache() |
facades.Config | facades.Config() |
facades.Crypt | facades.Crypt() |
facades.Event | facades.Event() |
facades.Gate | facades.Gate() |
facades.Grpc | facades.Grpc() |
facades.Hash | facades.Hash() |
facades.Log | facades.Log() |
facades.Mail | facades.Mail() |
facades.Orm | facades.Orm() |
facades.Queue | facades.Queue() |
facades.RateLimiter | facades.RateLimiter() |
facades.Route | facades.Route() |
facades.Schedule | facades.Schedule() |
facades.Storage | facades.Storage() |
facades.Validation | facades.Validation() |
4。 修改 app/providers/*
为所有文件添加导入:
import (
"github.com/goravel/framework/contracts/foundation"
)
所有的 Register
、Boot
方法添加 app foundation.Application
输入参数:
func (receiver *AppServiceProvider) Register(app foundation.Application) {}
func (receiver *AppServiceProvider) Boot(app foundation.Application) {}
5。 修改 app/config/app.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
类型:
// 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
模块取消了对 S3
、OSS
、COS
、Minio
驱动的默认支持,并将支持转移到独立的扩展包中。
移除 config/filesystems.go::disks
中除 local
和正在使用的驱动之外的键:
// 修改后
"disks": map[string]any{
"local": map[string]any{
"driver": "local",
"root": "storage/app",
"url": config.Env("APP_URL", "").(string) + "/storage",
},
},
如果您使用除 local
以外的其他驱动程序,请参考相应驱动程序的文档进行安装:
驱动程序 | 链接 |
---|---|
S3 | https://github.com/goravel/s3 |
OSS | https://github.com/goravel/oss |
COS | https://github.com/goravel/cos |
Minio | https://github.com/goravel/minio |
8。 缓存模块取消默认支持 Redis
如果您没有使用 Redis,请在 config/cache.go::stores
中删除 redis
键:
// 已修改
"stores": map[string]any{
"memory": map[string]any{
"driver": "memory",
},
},
如果您正在使用 redis
驱动,请参考 redis
驱动文档进行安装:
驱动 | 链接 |
---|---|
Redis | https://github.com/goravel/redis |
9。 更改模型中 CreatedAt、UpdatedAt 的类型(如果使用)
为了使 API 输出中的时间类型更加标准,Model
中 CreatedAt
、UpdatedAt
的类型从 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
添加 path
和 carbon
辅助方法,您可以轻松获取路径信息并在项目中处理时间,详情。
升级依赖
版本:v1.12.0
为了提供更好的功能支持,Goravel 依赖的所有包的版本都已升级。
迁移添加新方法
版本:v1.12.0
命令 | 操作 |
---|---|
migrate:fresh | 删除所有表并重新运行所有迁移 |
migrate:refresh | 重置并重新运行所有迁移 |
migrate:reset | 回滚所有数据库迁移 |
migrate:status | 显示每个迁移的状态 |
一些 make
命令支持子目录
版本:v1.12.0
命令 | 生成文件 |
---|---|
make:policy User/AuthPolicy | app/policies/User/auth_policy.go |
make:command Goravel/CleanCache | app/console/commands/Goravel/clean_cache.go |
make:model User/Phone | app/models/User/phone.go |
make:observer User/PhoneObserver | app/observers/User/phone_observer.go |
make:event User/GoravelEvent | app/events/User/goravel_event.go |
make:listener User/GoravelListen | app/listeners/User/goravel_listen.go |
make:controller User/AuthController | app/http/controllers/User/auth_controller.go |
make:middleware User/Auth | app/http/middleware/User/auth.go |
make:request User/Auth | app/http/requests/User/auth.go |
make:job Goravel/Job | app/jobs/Goravel/job.go |
make:rule User/Phone | app/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 过期且无效时,返回过期错误,而预期应先返回无效错误的问题。