从 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 tidy
2. 优化、移除废弃的方法
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 新增模型事件
Version: v1.11.0
Orm 模型触发几个事件,允许你挂接到模型生命周期的如下节点:Retrieved
、Creating
、Created
、Updating
、Updated
、Saving
、Saved
、Deleting
、Deleted
、ForceDeleting
、ForceDeleted
。
Cache 新增、优化方法
Version: v1.11.0
新增方法
方法名 | 作用 |
---|---|
Decrement | 递减值 |
Increment | 递增值 |
Lock | 原子锁 |
Store | 访问多个缓存存储 |
优化方法
Get
, GetBool
, GetInt
, GetInt64
, GetString
, Pull
方法不再需要传递默认值(向下兼容)。
Route 支持 Fallback 路由
Version: v1.11.0
您可以定义一个在没有其他路由匹配传入请求时将执行的路由。
facades.Route.Fallback(func(ctx http.Context) http.Response {
return ctx.Response().String(404, "not found")
})
Orm 新增方法
Version: v1.11.0
方法名 | 作用 |
---|---|
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 新增资源路由
Version: v1.11.1
facades.Route.Resource("/resource", resourceController)
Request 新增方法
Version: v1.11.1
方法名 | 作用 |
---|---|
All | 获取所有输入数据 |
Host | 获取请求 Host |
Queries | 获取所有查询字符串 |
即将废弃 Form
, Json
方法,请替换为 Input
。
Storage 新增方法
Version: v1.11.1
方法名 | 作用 |
---|---|
LastModified | 获取文件最后修改时间 |
MimeType | 获取文件类型 |
File 新增方法
Version: v1.11.1
方法名 | 作用 |
---|---|
LastModified | 获取文件最后修改时间 |
MimeType | 获取文件类型 |
Size | 获取文件大小 |
修复文件储存 windows 路径错误的问题
Version: v1.11.1
windows 系统中路径有斜线不对的问题。
修复 Request 模块 Header panic 问题
Version: v1.11.1
ctx.Request().Header( key: "token")
将会 panic。
同时使用 Request.Input() 与 Request.Bind() 方法数据错误的问题
Version: v1.11.2
由于使用 Request.Input()
方法会清空 Request.Body
,之后再使用 Request.Bind()
,将无法正确获取到数据。
Schedule 中 panic 导致进程中断的问题
Version: v1.11.3
当 Schedule 中出现 panic,会导致进程中断,影响所有定时任务。
Schedule 中 DailyAt 每分钟都会执行的问题
Version: v1.11.3
修复 DailyAt
每分钟都会执行的问题:
func (kernel *Kernel) Schedule() []schedule.Event {
return []schedule.Event{
facades.Schedule.Call(func() {
fmt.Print("1")
}).DailyAt("18:00"),
}
}