Laravel 10.30 发布

本周,Laravel 团队发布了 v10.30,其中包括基于数据库事务结果调度事件的功能。 本周的版本进行了许多小修复、添加了测试和其他更改。 完整的更新列表请参阅更新日志。

根据数据库事务结果调度事件

Mateus GuimarãesTaylor 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 ZakiPull 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] 根据 @hafezdivandariPR#48877 中的更改,修复了在原生列属性实现中,使用保留字作为列名时受保护属性(guarded attributes)失效的问题。这个更改解决了在使用 PostgreSQL 数据库时,当列名与保留字冲突时,无法正确应用受保护属性的问题。修复后,可以正常地使用保留字作为列名,并且受保护属性将按预期工作。

v10.30.0

  • [10.x] @crynobonePR#48815 中进行的测试改进

  • [10.x] 通过 PR#48814 中的 @timacdonald 验证哈希配置

  • [10.x] @cxlblm 修复了 PR#48826 在 Lumen 中使用 ArrayCache 的 now 函数的问题

  • [10.x] 根据 @timacdonaldPR#48824 中的解决方案,匹配服务提供者。

  • [10.x] 修复了在 PR#48823 中通过 @kpicaza 注册 PSR 请求的类型错误

  • [10.x] 根据 @kpicazaPR#48823 中的修复,修复了注册 PSR Request 时的类型错误。

  • [10.x] 能够通过 <> 中的 配置默认会话块超时

  • [10.x] 根据 @bytestreamPR#48795 中的更改,现在可以配置默认的会话阻塞超时时间。

  • [10.x] 根据 @NickSdotPR#48768 中的改进,对 artisan migrate --pretend 🚀命令进行了优化。

  • [10.x] 根据 @hafezdivandariPR#48357 中的更改,添加支持获取原生列属性的功能。

  • [10.x] 根据 @hafezdivandariPR#48357 中的更改,添加了获取原生列属性的支持。

  • [10.x] 根据 @luka-papezPR#48852 中的修复,对于通过传递基础对象调用的方法,应该进行不区分大小写的处理。

github.com/laravel/framework/pull/...

  • [10.x] @cosmastech 修复了在 github.com/laravel/framework/pull/...QueriesRelationships[getRelationHashedColumn()](github.com/getRelationHashedColumn) 键入提示

  • [10.x] 根据 @cosmastechPR#48847 中修复了 QueriesRelationships@getRelationHashedColumn() 的类型提示。

  • [10.x] 记录 github.com/laravel/framework/pull/... 中的 @timacdonald 的异常作业

  • [10.x] 根据 @timacdonaldPR#48830 中的更改,在异常情况下记住了该队列任务。

  • 修复了当我们通过 github.com/laravel/framework/pull/... 中的 @mhfereydouni 将可调用对象传递给 throwUnlessStatus 方法时总是抛出异常的错误 [包含测试]

  • [10.x] 根据 @mhfereydouniPR#48844 中的修复,修复了当我们将可调用对象传递给 throwUnlessStatus 方法时始终抛出异常的 bug,并包含了相应的测试。

  • [10.x] 通过 github.com/laravel/framework/pull/... 中的 @mateusjatenee 重置 ShouldDispatchAfterCommitEventTest 对象属性

  • [10.x] 根据 @mateusjateneePR#48705 中的更改,实现了基于数据库事务结果的事件调度。这意味着可以根据数据库事务的成功或失败情况来触发相应的事件。

  • [10.x] 根据 @mateusjateneePR#48858 中的更改,重置了 ShouldDispatchAfterCommitEventTest 对象的属性。这个更改可能是为了确保在每个测试运行之前,测试对象的属性都处于初始状态,以便测试的可靠性和一致性。

  • [10.x] 在 github.com/laravel/framework/pull/... 中通过 @sidneyprins 尝试转义数据库连接数组时抛出异常

  • [10.x] 根据 @sidneyprinsPR#48836 中的更改,当尝试对数据库连接进行转义(escape)数组时,会抛出异常。这个更改可能是为了防止错误的使用转义功能,因为数据库连接的转义通常是用于处理字符串而不是数组。通过抛出异常,可以提醒开发人员正确使用转义功能,并避免潜在的错误。

  • [10.x] 根据 @LasseRafnPR#48849 中的更改,修复了在 HTTP Facade 的查询参数和请求体中,未将可转换为字符串的 Stringable 对象转换为字符串的问题。这个更改确保了在使用 HTTP Facade 发送请求时,可以正确地处理 Stringable 对象,并将它们转换为字符串,以便在请求中使用。这样可以避免由于未正确转换对象而导致的错误或异常。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-10-30-0

译文地址:https://learnku.com/laravel/t/84436

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

跟不上,我真的跟不上~

5个月前 评论

谁翻译的,拉出去割了

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!