---
title: "Підтримка HTTP-методу QUERY у Laravel 13.19"
url: https://laravelukraine.com/blog/pidtrimka-http-metodu-query-u-laravel-1319
date: 2026-07-09
source: https://laravel-news.com/laravel-13-19-0?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+laravelnews
---

# Підтримка HTTP-методу QUERY у Laravel 13.19

Реліз Laravel 13.19.0 завершує впровадження підтримки HTTP-методу QUERY у HTTP-клієнті та тестових хелперах, а також додає низку покращень для роботи з колекціями, рядками та чергами завдань поряд із звичними виправленнями помилок.

## Ключові нововведення

### Метод `Http::query()` для HTTP-клієнта

HTTP-клієнт отримав новий метод `query()` для надсилання запитів із HTTP-дієсловом QUERY, яке передає параметри в тілі запиту, а не в URL. Цей метод працює аналогічно до існуючих `post()`, `put()` та `patch()`, за замовчуванням надсилаючи JSON або дані у форматі form-encoded при виклику `asForm()`.

```php
$response = Http::query('https://api.example.com/search', [
    'filter' => ['status' => 'active'],
]);
```

Існуюча обробка URL-параметрів залишається незмінною: методи `withQueryParameters()` та аргумент `$query` для `get()` продовжують працювати як і раніше.

### Тестові хелпери `query()` та `queryJson()`

Для тестування маршрутів, що відповідають на QUERY-запити, додано відповідні хелпери `query()` та `queryJson()`. Вони працюють аналогічно до специфічних методів на кшталт `delete()` та `deleteJson()`, розміщуючи тестові дані в тілі запиту.

```php
Route::match(['QUERY'], '/search', fn () => request()->input('filter'));
$this->queryJson('/search', ['filter' => 'active'])->assertOk();
```

### Метод колекції `reduceInto()`

Новий метод `reduceInto()` є варіантом `reduce()` для випадків, коли потрібно мутувати акумулятор на місці замість повернення нового значення на кожній ітерації. Колбек отримує акумулятор та поточний елемент, а його повернене значення ігнорується, тому об'єктні акумулятори не потребують `return`:

```php
$stats = $orders->reduceInto(new OrderStats, function ($stats, $order) {
    $stats->total += $order->amount;
    $stats->count++;
    $stats->largest = max($stats->largest, $order->amount);
});
```

Для масивів або скалярних акумуляторів слід передавати акумулятор за посиланням:

```php
$tagsMap = $posts->reduceInto([], function (&$map, $post) {
    $post->tags->each(fn ($tag) => $map[$tag][] = $post->title);
});
```

### Хелпер для рядків `counted()`

Метод `Str::counted()` та його еквівалент для `Stringable` формують множину слова та додають числівник одним викликом - це скорочений запис для `plural($count, prependCount: true)`:

```php
str('order')->counted(1); // "1 order"
str('order')->counted(2); // "2 orders"
```

## Покращення черг завдань

Масові відправлення до SQS тепер використовують API `SendMessageBatch` замість окремого виклику для кожного завдання, що скорочує кількість запитів при додаванні багатьох завдань одночасно. Фейк черги тепер може інспектувати зарезервовані завдання, тож тести можуть перевіряти завдання, які взято в обробку, але ще не завершено.

## Інші виправлення та покращення

Серед додаткових змін:

- Передача параметра `deletedAtColumn` у методи `assertSoftDeleted()` та `assertNotSoftDeleted()`
- Можливість визначати параметри конфігурації пошти без імені
- Завершення значення стилю за замовчуванням крапкою з комою в методі `ComponentAttributeBag::merge()`
- Додано тести для where-клаузів з відносними датами та методів past/future правила date

Повний список змін доступний у [офіційному changelog](https://github.com/laravel/framework/blob/13.x/CHANGELOG.md) та [release notes](https://github.com/laravel/framework/releases/tag/v13.19.0).
