Вийшов Laravel 12.52.0. Реліз сфокусований на factory ergonomics, стабільності компіляції Blade та predictability у тестах.
Ключові зміни
-
Factory::makeMany() для створення кількох моделей без збереження в БД. Зручно для unit-тестів, трансформацій і підготовки in-memory даних.
-
withoutAfterMaking() і withoutAfterCreating() для точкового вимкнення callbacks. Можна прибрати side effects у тесті без редагування самої factory.
-
temporaryUploadUrl() тепер працює і з local disk. У dev/test середовищах більше не потрібно перемикатися на S3 лише для цього сценарію.
-
Atomic writes у BladeCompiler для compiled views. Це зменшує race condition при паралельній компіляції та захищає від частково записаного cache-файлу.
-
Виправлено delay у Mailable::later() і додано зручні assert-перевірки затримки в Mail::assertQueued(). Черги листів стають передбачуванішими в тестах.
-
LazyCollection::random() отримав preserveKeys, а selectExpression() приймає string без зайвого DB::raw(). Менше boilerplate у щоденному коді.
-
У stack traces коректніше відображаються closure/standalone functions. Debugging route closures і callback-коду став читабельнішим.
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
$draftUsers = User::factory()->makeMany(3);
$user = User::factory()
->withoutAfterCreating()
->create();
$revenue = DB::table('orders')
->selectExpression('SUM(total) as revenue')
->value('revenue');
Mail::fake();
Mail::to('user@example.com')
->later(now()->addMinutes(10), new WelcomeMail());
Mail::assertQueued(WelcomeMail::class, function ($mail) {
return $mail->delay->equalTo(now()->addMinutes(10));
});
Джерело: laravel-news.com/laravel-12-52-0