从 v1.10 升级到 v1.11

v1.11.3

Bug 修复 🐛

v1.11.2

Bug 修复 🐛

v1.11.1

功能增强 🚀

Bug 修复 🐛

v1.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 模型触发几个事件,允许你挂接到模型生命周期的如下节点:RetrievedCreatingCreatedUpdatingUpdatedSavingSavedDeletingDeletedForceDeletingForceDeleted

详见文档

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

详见文件open in new window

Route 新增资源路由

Version: v1.11.1

facades.Route.Resource("/resource", resourceController)

For Detail

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"),
  }
}