Laravel 8.76 发布了
Laravel 团队发布了 8.76 版本,包括 afterRefreshingDatabase()
测试方法,MySQL invisible 修饰符支持,新的字符串方法以及v8.x 的最新更新
After Refreshing Database 测试方法
Luke Downing 贡献了 afterRefreshingDatabase
方法。当你运行 miration 后需要在测试中直接创建种子数据时, 你可以使用该方法(详情请查看 PR 描述)
示例:
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
use LazilyRefreshDatabase;
protected function afterRefreshingDatabase()
{
$this->artisan('db:seed', [
'--class' => RoleAndPermissionSeeder::class
]);
}
}
自定义子模型路由绑定
@marvin-wtt 贡献了通过 resolevRouteBindingQuery
方法重写子模型路由绑定方案。更多详情查看 RP#39929
通用 4xx 错误状态码 布尔值检查
Adam Rodriguez 为 Response
类贡献了 forbidden()
和 unauthorized
方法。这些方法很好地理清了以下这些状态的逻辑:
// Before
if ($response->status() === 401) {
// ...
}
if ($response->status() === 403) {
// ...
}
// After
if ($response->unauthorized()) {
// ...
}
if ($response->forbidden()) {
// ...
}
MySQL 列的 Invisible 修饰符
Oliver Matla 贡献了 MySQL v8.0.23 引进的 invisible 修饰符支持。当某些列被标记为 invisible 时, 这些列不会被隐式(i.e, SELECT *)添加到 Laravel 模型中。这些列仍然可以显式 SELECT,除非显式需要数据,否则省略这些列很有用:
Schema::table('users', function (Blueprint $table) {
$table->string('secret')->nullable()->invisible();
});
该特性目前仅支持 MySQL
substr_replace() 的字符串支持
Ralph J. Smit 为 Str
和 Stringable
类贡献了 substrReplace()
方法:
// Insert a string at a certain position
$string = '1300';
$result = Str::substrReplace($string, ':', 2, 0);
// '13:00'
// Replace the remainder of a string
$result = (string) Str::of('Laravel Framework')
->substrReplace('– The PHP Framework for Web Artisans', 8);
// 'Laravel – The PHP Framework for Web Artisans'
v8.76.0
Added
- Added possibility to customize child model route binding resolution (#39929)
- Added Illuminate/Http/Client/Response::reason() (#39972)
- Added an afterRefreshingDatabase test method (#39978)
- Added unauthorized() and forbidden() to Illuminate/Http/Client/Response (#39979)
- Publish view-component.stub in stub:publish command (#40007)
- Added invisible modifier for MySQL columns (#40002)
- Added Str::substrReplace() and Str::of($string)->substrReplace() methods (#39988)
Fixed
- Fixed parent call in view (#39909)
- Fixed request dump and dd methods (#39931)
- Fixed php 8.1 deprecation in ValidatesAttributes::checkDateTimeOrder (#39937)
- Fixed withTrashed on routes check if SoftDeletes is used in Model (#39958)
- Fixes model:prune --pretend command for models with SoftDeletes (#39991)
- Fixed SoftDeletes force deletion sets "exists" property to false only when deletion succeeded (#39987)
- Fixed possible out of memory error when deleting values by reference key from cache in Redis driver (#39939)
- Fixed Password validation failure to allow errors after min rule (#40030)
Changed
- Fail enum validation with pure enums (#39926)
- Remove redundant description & localize template (#39928)
- Fixes reporting deprecations when logger is not ready yet (#39938)
- Replace escaped dot with place holder in dependent rules parameters (#39935)
- passthru from property to underlying query object (127334a)