Команда Laravel випустила версію v12.1.0 — перше незначне оновлення Laravel 12. Це оновлення включає метод контекстного охоплення, метод Arr::partition(), метод getRawSql() для обробки винятків запитів та інші нові можливості.
Ліам Дакетт додав метод partition
до допоміжних функцій для масивів, що дозволяє використовувати логіку розподілу без колекцій:
$numbers = [0, 1, 2, 3, 4, 5];
// Використання колекцій
[$evens, $odds] = collect($numbers)->partition(fn(int $number) => $number % 2 === 0);
// Використання методу Arr::partition()
[$evens, $odds] = Arr::partition($numbers, fn(int $number) => $number % 2 === 0);
Цей метод розділяє масив на два відповідно до переданого зворотного виклику.
@erickcomp додав метод getRawSql()
до класу QueryException
, який повертає необроблене представлення SQL-запиту з вкладеними зв'язками. Цей метод можна використовувати для повідомлень про проблеми із запитами:
->withExceptions(function (Exceptions $exceptions) {
$exceptions->report(function (QueryException $e) {
// ...
MyErrorServiceFacade::report('Помилка при виконанні SQL: ', $e->getRawSql());
});
})
Люк Кузміш додав метод Context::scope()
, який дозволяє зберігати контекст під час виконання функції, а потім відновлювати його:
// До
Context::add('event_id', $event->id);
try {
$this->innerHandle($event);
} finally {
Context::forget(['event_id', 'sns_message_id']);
}
// Після
Context::scope(
fn () => $this->innerHandle($event),
['event_id' => $event->id]
);
Більше про метод Context::scope()
можна дізнатися в документації.
Кевін Буї додав трейти Tappable
до класу тестування PendingCommand
, що дозволяє обробляти перевірки все за один раз:
$this->artisan('orders:refunding', ['--ids' => 1])
->expectsOutput('Початок повернення...')
->tap(function ($command) {
// ...
$command->expectsOutput('...');
});
Дивіться Pull Request #54801 для повного прикладу.
Повний список нових функцій і оновлень ви можете знайти нижче, а також переглянути різницю між 12.0.0 і 12.1.0 на GitHub. Наступні примітки безпосередньо з чанглогу:
BuildsWhereDateClauses
від @mohprilaksono в https://github.com/laravel/framework/pull/54784paginate()
на \Illuminate\Pagination\LengthAwarePaginator
від @carestad в https://github.com/laravel/framework/pull/54826Hasher::verifyConfiguration()
перед перенаправленням виклику від @rodrigopedra в https://github.com/laravel/framework/pull/54833AsStringable
в ключі Notifiable від @crynobone в https://github.com/laravel/framework/pull/54818Context::scope()
від @cosmastech в https://github.com/laravel/framework/pull/54799Date
та виправлення типу повернення від @lmottasin в https://github.com/laravel/framework/pull/54847ContextLogProcessor
від @cosmastech в https://github.com/laravel/framework/pull/54851