Команда Laravel випустила версію 12.43: у ній з’явилися нові методи Eloquent-колекцій для злиття видимості атрибутів у колекції, можливість робити HTTP Client Response макросним та інші зміни.
Як і в попередніх релізах, цього разу також багато внесків — дякуємо всім, хто робить Laravel кращим. Ось головні новинки у Laravel 12.43!
# Методи Eloquent Collections mergeHidden() та mergeVisible()
Mahmoud Ramadan додав методи mergeHidden() та mergeVisible() до Eloquent-колекцій — тепер можна змінювати видимість атрибутів для всієї колекції:
use App\Models\User;
$users = User::withWhereHas('comments')->get();
$users->mergeVisible(['updated_at']);
# Додати Macroable до класу HTTP Client Response
Kevin Bui додав трейт Macroable до класу Response HTTP-клієнта:
use Illuminate\Http\Client\Response;
Response::macro(
'movieFields',
fn () => $this->collect()->only('title', 'year', 'runtime', 'director', 'plot')
);
$response = Http::get(...);
$response->movieFields();
# Зробити PendingDispatch::afterResponse умовним
@kenneth-saey оновив метод afterResponse() у PendingDispatch, додавши можливість умовно відкладати виконання Job після відправлення відповіді браузеру:
// Before
if (app()->environment('local')) {
MyJob::dispatch($myData)
->afterResponse();
} else {
MyJob::dispatch($myData);
}
// After
MyJob::dispatch($myData)
->afterResponse(! app()->environment('local'));
# Дозволити Storage::fake() приймати Enum як ім'я диска
Bert Bredewold додав можливість передавати Enum для імені диска при використанні storage fake. Тепер fake() узгоджується з Storage::disk():
// New in Laravel 12.43
Storage::fake(Disk::Local);
// Already possible before Laravel 12.43
Storage::disk(Disk::Local);
# Тестова ассерція Response assertFailedDependency
Artyom Osepyan додав тест-ассерцію для коду клієнтської помилки HTTP 424 Failed Dependency. Ця відповідь означає, що операцію неможливо виконати, бо вона залежала від іншої дії, яка зазнала невдачі.
$this->assertFailedDependency();
// Equivalent to
$this->assertStatus(424);
# Примітки до релізу
Повний список змін і оновлень дивіться нижче та на GitHub у порівнянні між 12.42.0 і 12.43.0. Наступні нотатки взяті з changelog:
# v12.43.0
- [12.x] Додано PHPDoc callable-типи для методів BusFake від @alies-dev у https://github.com/laravel/framework/pull/58070
- Покращено анотації типів для
$batchIdу трейтіBatchableвід @markieo1 у https://github.com/laravel/framework/pull/58069 - [12.x] Виправлено дедлок у
cache_locksпід час очищення від @jackbayliss у https://github.com/laravel/framework/pull/58071 - feat: реалізовано ассерцію 'assertFailedDependency' для Response від @artengin у https://github.com/laravel/framework/pull/58061
- [12.x] Виправлено використання
nullяк cache store, що викликало депрікацію в PHP 8.5 — @jnoordsij у https://github.com/laravel/framework/pull/58074 - [12.x] Виправлено застаріле використання передачі
nullвarray_key_existsв класіAsPivot— @jnoordsij у https://github.com/laravel/framework/pull/58073 - [12.x] Спрощено очищення resolved instances для класів
Facade— @jnoordsij у https://github.com/laravel/framework/pull/58072 - [12.x] Додано PHP 8.5 з Herd до passthrough variables у
ServeCommand— @bashgeek у https://github.com/laravel/framework/pull/58080 - [12.x] Оновлено actions/checkout з v4 до v6 — @jackbayliss у https://github.com/laravel/framework/pull/58078
- [12.x] Дозволити
Storage::fake()приймати enum як ім'я диска — @bbredewold у https://github.com/laravel/framework/pull/58076 - Покращено PHPDoc-тип повернення для синхронних методів HTTP Client від @khaled-sadek у https://github.com/laravel/framework/pull/58090
- [12.x] Відкориговано
testCanRetrieveAllFailedJobs— @jackbayliss у https://github.com/laravel/framework/pull/58096 - [12.x] Дозволити методу Factory::connection приймати
null— @jackbayliss у https://github.com/laravel/framework/pull/58108 - [12.x] Зроблено
PendingDispatch::afterResponseумовним — @kenneth-saey у https://github.com/laravel/framework/pull/58099 - [12.x] Додано методи
mergeHiddenіmergeVisibleдо класу Collection — @mahmoudmohamedramadan у https://github.com/laravel/framework/pull/58110 - Додано повідомлення "SSL error: unexpected eof" до LostConnectionDetector — @GuidoHendriks у https://github.com/laravel/framework/pull/58113
- [12.x] Оновлено git-auto-commit action — @jackbayliss у https://github.com/laravel/framework/pull/58118
- [12.x] Додано тести для Support Uri class — @miladev95 у https://github.com/laravel/framework/pull/58114
- [12.x] Зроблено Client Response class tappable — @kevinb1989 у https://github.com/laravel/framework/pull/58115
- [12.x] Додано відсутній docblock-параметр у докблоках події FailedOver — @jackbayliss у https://github.com/laravel/framework/pull/58123
- [12.x] Приведено до ладу DynamoDbStore — @cosmastech у https://github.com/laravel/framework/pull/58116
- [12.x] Виправлено: обробка
ParseErrorвhasEvenNumberOfParenthesesколи активний Xdebug — @crynobone у https://github.com/laravel/framework/pull/58128 - [12.x] Виправлено
Password::required()— тепер воно має помилково проходити, коли значення відсутнє — @faisuc у https://github.com/laravel/framework/pull/58125 - [12.x] Додано тести для HigherOrderProxy (Collection & Tap) — @miladev95 у https://github.com/laravel/framework/pull/58138
- [12.x] Виконувати подію
ConnectionEstablishedпри повторному підключенні до бази даних — @crynobone у https://github.com/laravel/framework/pull/58136