Laravel 10.30 发布
本周,Laravel 团队发布了 v10.30,其中包括基于数据库事务结果调度事件的功能。 本周的版本进行了许多小修复、添加了测试和其他更改。 完整的更新列表请参阅更新日志。
根据数据库事务结果调度事件
Mateus Guimarães 和 Taylor Otwell 协作根据正在进行的数据库事务的结果分派事件:
此 PR 的目的是让事件本身了解事务。 因此,如果事务失败,事件甚至不会触发。 这样,侦听器是否排队或是否启用 afterCommit 都无关紧要,并且可以确保在测试中事件不会被触发。
感谢此贡献,现在可以将「ShouldDispatchAfterCommit」接口添加到事件中,该接口指示事件调度程序推迟调度事件,直到提交事务为止; 如果事务回滚,则不会触发该事件。
下面是的示例,说明了它的工作原理——假设有以下事务和事务中的调度:
DB::beginTransaction();
Log::info("事务已开始");
$order = Order::create(['amount' => 5000]);
// 其他业务代码...
Log::info("正在调度 OrderCreated 事件");
OrderCreated::dispatch($order);
Log::info("正在关闭事务");
DB::commit();
日志可能如下所示:
local.INFO:事务已开始
local.INFO:正在调度 OrderCreated 事件
local.INFO:正在关闭事务
local.INFO:OrderCreated 事件已处理...
最后,该事件如下所示:
use Illuminate\Contracts\Events\ShouldDispatchAfterCommit;
class OrderCreated implements ShouldDispatchAfterCommit
{
// ...
}
与「ShouldDispatchAfterCommit」一起,Pull Request #48705 扩展到包括其他接口,例如用于监听器的「ShouldHandleEventsAfterCommit」和「ShouldQueueAfterCommit」,这些接口可以在队列上实现 、侦听器、邮件和通知。
测试改进
Mior Muhammad Zaki 在 Pull Request #48815 中贡献了测试改进,使 Laravel 与未来发布的 PHPUnit 11 兼容。你可以查看该 Pull Request 以获取更多详细信息。这些改进可能包括更新测试代码,调整断言语法或修复与新版本 PHPUnit 的兼容性问题,以确保 Laravel 在使用 PHPUnit 11 时能够正常运行。感谢 Mior Muhammad Zaki 对 Laravel 框架的贡献!
发行说明
你可以在 GitHub 上查看新功能和更新的完整列表以及10.29.0 和 10.30.1 之间的差异。 以下发行说明直接来自changelog
v10.30.1
- [10.x] 根据 @hafezdivandari 在 PR#48877 中的更改,修复了在原生列属性实现中,使用保留字作为列名时受保护属性(guarded attributes)失效的问题。这个更改解决了在使用 PostgreSQL 数据库时,当列名与保留字冲突时,无法正确应用受保护属性的问题。修复后,可以正常地使用保留字作为列名,并且受保护属性将按预期工作。
v10.30.0
[10.x] @crynobone 在 PR#48815 中进行的测试改进
[10.x] 通过 PR#48814 中的 @timacdonald 验证哈希配置
[10.x] @cxlblm 修复了 PR#48826 在 Lumen 中使用 ArrayCache 的 now 函数的问题
[10.x] 根据 @timacdonald 在 PR#48824 中的解决方案,匹配服务提供者。
[10.x] 根据 @kpicaza 在 PR#48823 中的修复,修复了注册 PSR Request 时的类型错误。
[10.x] 能够通过 <> 中的 配置默认会话块超时
[10.x] 根据 @bytestream 在 PR#48795 中的更改,现在可以配置默认的会话阻塞超时时间。
[10.x] 根据 @NickSdot 在 PR#48768 中的改进,对
artisan migrate --pretend
🚀命令进行了优化。[10.x] 根据 @hafezdivandari 在 PR#48357 中的更改,添加支持获取原生列属性的功能。
[10.x] 根据 @hafezdivandari 在 PR#48357 中的更改,添加了获取原生列属性的支持。
[10.x] 根据 @luka-papez 在 PR#48852 中的修复,对于通过传递基础对象调用的方法,应该进行不区分大小写的处理。
github.com/laravel/framework/pull/...
[10.x] @cosmastech 修复了在 github.com/laravel/framework/pull/... 的
QueriesRelationships[getRelationHashedColumn()]
(github.com/getRelationHashedColumn) 键入提示[10.x] 根据 @cosmastech 在 PR#48847 中修复了 QueriesRelationships@getRelationHashedColumn() 的类型提示。
[10.x] 记录 github.com/laravel/framework/pull/... 中的 @timacdonald 的异常作业
[10.x] 根据 @timacdonald 在 PR#48830 中的更改,在异常情况下记住了该队列任务。
修复了当我们通过 github.com/laravel/framework/pull/... 中的 @mhfereydouni 将可调用对象传递给 throwUnlessStatus 方法时总是抛出异常的错误 [包含测试]
[10.x] 根据 @mhfereydouni 在 PR#48844 中的修复,修复了当我们将可调用对象传递给
throwUnlessStatus
方法时始终抛出异常的 bug,并包含了相应的测试。[10.x] 通过 github.com/laravel/framework/pull/... 中的 @mateusjatenee 重置 ShouldDispatchAfterCommitEventTest 对象属性
[10.x] 根据 @mateusjatenee 在 PR#48705 中的更改,实现了基于数据库事务结果的事件调度。这意味着可以根据数据库事务的成功或失败情况来触发相应的事件。
[10.x] 根据 @mateusjatenee 在 PR#48858 中的更改,重置了
ShouldDispatchAfterCommitEventTest
对象的属性。这个更改可能是为了确保在每个测试运行之前,测试对象的属性都处于初始状态,以便测试的可靠性和一致性。[10.x] 在 github.com/laravel/framework/pull/... 中通过 @sidneyprins 尝试转义数据库连接数组时抛出异常
[10.x] 根据 @sidneyprins 在 PR#48836 中的更改,当尝试对数据库连接进行转义(escape)数组时,会抛出异常。这个更改可能是为了防止错误的使用转义功能,因为数据库连接的转义通常是用于处理字符串而不是数组。通过抛出异常,可以提醒开发人员正确使用转义功能,并避免潜在的错误。
[10.x] 根据 @LasseRafn 在 PR#48849 中的更改,修复了在 HTTP Facade 的查询参数和请求体中,未将可转换为字符串的 Stringable 对象转换为字符串的问题。这个更改确保了在使用 HTTP Facade 发送请求时,可以正确地处理 Stringable 对象,并将它们转换为字符串,以便在请求中使用。这样可以避免由于未正确转换对象而导致的错误或异常。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
跟不上,我真的跟不上~
谁翻译的,拉出去割了