几天内即可获得 Laravel 代码审查方面的专家指导

Laravel 13.2.0 中的新表达型模型属性

最后更新于 经过

Laravel 13.2.0 图片中的新表现力模型属性

Laravel 13.2.0 为 Eloquent 模型添加了一组新的对称、富有表现力的 PHP 属性,并支持枚举。 #[Queue]#[Connection] 属性等等。

主要亮点包括:

  • 新的对称 Eloquent 模型属性( #[DateFormat] , #[WithoutTimestamps] 等等)
  • 枚举支持 #[Queue]#[Connection] 队列属性
  • releaseOnSignal 参数 withoutOverlapping() 处理意外的进程终止
  • UniqueConstraintViolationException 现在包含列和索引信息
  • schedule:list 以正确的时区显示 cron 表达式

什么是新的

对称雄辩模型属性

PR #59284 添加了一组专注的、单一用途的属性,作为多参数属性的替代方案,例如 #[Table] 现在,每个关注点都拥有自己专属的属性,而不是将多个关注点打包到一个属性中:

// 前
#[ 桌子 时间戳 : 错误的 , 日期格式 : '在' )]
班级 邮政 延伸 模型 {}
// 后
#[ 日期格式 '在' )]
#[ 无时间戳 ]
班级 邮政 延伸 模型 {}

新属性反映了 Eloquent 模型中已存在的属性,从而更容易在类级别以声明方式配置模型行为。

拉取请求: #59284

枚举支持 #[Queue]#[Connection]

#[Queue]#[Connection] PHP 属性现在可以直接接受枚举类型的值,因此您可以传递枚举值而无需调用 `get()` 方法。 ->value :

// 前
#[ 队列 尾巴 :: 日志摄取 -> 价值)]
最终的 班级 摄取审计日志 实现 应该排队 {}
// 后
#[ 队列 尾巴 :: 日志摄取 )]
最终的 班级 摄取审计日志 实现 应该排队 {}

这使得该属性的行为与直接通过该属性所支持的行为保持一致。

拉取请求: #59278

releaseOnSignal 为了 withoutOverlapping()

withoutOverlapping() 现在接受一个 releaseOnSignal 参数。当 true 如果进程收到终止信号(SIGTERM、SIGINT 或 SIGQUIT),则重叠锁(存储为缓存键)将被释放,以便在调度程序重新启动时,任务可以立即再次运行。

如果没有这个功能,如果在任务运行时调度程序进程被终止(这种情况可能会在托管基础设施上发生),则锁将保持设置状态,并且任务将不会再次运行,直到重叠 TTL 到期。

工匠 :: 命令 'reports:generate' , 功能 (){
// ...
}) -> 不重叠 信号释放 : 真的 (英文):

需要 pcntl 扩大。

拉取请求: #59298

UniqueConstraintViolationException 包含列和索引详情

UniqueConstraintViolationException 现在会显示违反唯一约束的列和索引名称。可用数据因数据库驱动程序而异:

司机 columns index
SQLite
PostgreSQL
MySQL
SQL 服务器
尝试 {
用户 :: 创造 ([ '电子邮件' => 'taken@example.com' ]);
} 抓住 UniqueConstraintViolationException $e) {
$e -> 列; 例如,PostgreSQL/SQLite 中的 ['email']
$e -> 指数; 例如,PostgreSQL/MySQL/SQL Server 中的“users_email_unique”
}

拉取请求: #59299

schedule:list 以正确的时区显示表达式

schedule:list 现在,该命令会根据每个任务配置的时区调整 cron 表达式,而不是始终以应用程序的默认时区显示。这样,输出结果就与任务实际运行的时间保持一致。

拉取请求: #59286

Backoff 属性现在是可变参数的

#[Backoff] 该属性现在接受一个可变参数的延迟值列表,与通过以下方式提供的基于数组的方法相匹配: backoff 已排队作业的属性:

#[ 退缩 10 , 30 , 60 )]
班级 流程订单 实现 应该排队 {}

拉取请求: #59354

魔法工厂方法接受多个数组

动态 has*() 工厂方法(例如, hasPosts() , hasTags() 现在接受多个数组,因此您可以为每个相关模型传递不同的属性集,而无需使用 forEachSequence() 手动:

用户 :: 工厂 ()
-> 有帖子 ([ '标题' => “第一篇帖子” ], [ '标题' => “第二篇帖子” ])
-> 创造 ();

在底层,传递多个数组会触发某些操作。 forEachSequence() 为每个数组创建一个具有给定属性的相关模型。

拉取请求: #59343

其他修复和改进

队列和工作者:

  • 添加了一个 TimedOut 工人停止工作的原因( #59310
  • 允许选择退出员工工作异常报告( #59308
  • 限制错误页面查询监听器以防止 Octane 中的内存膨胀( #59309

模型与数据库:

  • 固定的 Table Pivot 模型中属性递增不起作用 #59336
  • 已确保 ScopedBy 属性与继承一起使用( #59332
  • 允许将枚举传递给模型属性( #59297
  • 已确保 connectUsing()UnitEnum#59306

收藏品:

  • sum() 回调函数现在接收项目键作为第二个参数( #59322

HTTP 和流媒体:

  • 处理异常 eventStream() 防止致命错误( #59292
  • 固定的 LazyPromise::wait() 与 Guzzle 的签名兼容性 PromiseInterface#59301

测试:

  • 修复了缺失 assertDontSeeInHtml() 否定断言( #59303

错误页面:

  • 为异常渲染器添加了移动安全区域内边距支持( #59341

表现:

  • 改进了原始 SQL 绑定替换性能( #59277

参考

保罗·雷德蒙德照片

Laravel News 特约撰稿人。全栈 Web 开发人员兼作家。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
了解软科技

以每小时 20 美元的价格聘请具备人工智能专业知识的 Laravel 开发人员。48 小时内即可开始工作。

访问 Acquaint Softtech
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
Laravel USPS:USPS API 镜像的现代化封装

Laravel USPS:USPS API 的现代化封装

阅读文章
Debugbar 发布 v4.2.0 版本,并新增了 Boost 技能图像。

Debugbar 发布 v4.2.0 版本,并新增了一项 Boost 技能。

阅读文章
Laravel 13.2.0 图片中的新表现力模型属性

Laravel 13.2.0 中的新表达型模型属性

阅读文章
Inertia.js v3.0.0 版本发布,包含乐观更新、useHttp 等更多功能(图片)。

Inertia.js v3.0.0 版本发布,新增乐观更新、useHttp 等功能。

阅读文章
Laravel Boost v2.4.0 新增安全审计和 Laravel 最佳实践技能图片

Laravel Boost v2.4.0 新增安全审计和 Laravel 最佳实践技能

阅读文章
在 Laravel 镜像中构建事务安全的多文档操作

在 Laravel 中构建事务安全的多文档操作

阅读文章