Спростіть генерацію URL за допомогою нового методу query() у Laravel

Перекладено ШІ 1 Laravel News 03 червня, 2026

Laravel пропонує елегантний підхід до генерації URL з параметрами запиту через новий метод query. Досліджте, як цей метод спрощує створення складних URL, зменшуючи повторення коду та помилки у статті

Laravel пропонує елегантніший підхід до генерації URL з параметрами запиту за допомогою нового методу query(). Цей спеціалізований API спрощує створення складних URL з рядками запиту, зменшуючи кількість повторюваного коду та можливі помилки.

// Генерує: http://localhost/products?sort=-name
url()->query('products', ['sort' => '-name']);

Метод query() приймає базовий шлях як перший аргумент та масив параметрів запиту як другий, обробляючи всі складнощі їх правильного поєднання та кодування у завершений URL.

// Прості пари ключ-значення
// http://localhost/products?sort=-name
url()->query('products', ['sort' => '-name']);
 
// Масиви як параметри (для фільтрів, колонок тощо)
// http://localhost/products?columns[0]=name&columns[1]=price&columns[2]=quantity
url()->query('products', ['columns' => ['name', 'price', 'quantity']]);
 
// Перезаписування існуючих параметрів
// http://localhost/products?sort=-price
url()->query('products?sort=-name', ['sort' => '-price']);
 
// Додавання параметрів до існуючих
// http://localhost/products?sort=-name&search=samsung
url()->query('products?sort=-name', ['search' => 'samsung']);

Цей метод особливо корисний при реалізації функцій, які потребують складних фільтрацій та сортировок. Наприклад, під час створення каталогу продуктів із динамічним фільтром:

class ProductController extends Controller
{
    public function index(Request $request)
    {
        $products = Product::query();
 
        // Застосування фільтрів на основі параметрів запиту
        if ($request->has('category')) {
            $products->where('category_id', $request->category);
        }
 
        // Застосування сортування
        if ($request->has('sort')) {
            $sort = $request->sort;
            $direction = str_starts_with($sort, '-') ? 'desc' : 'asc';
            $column = ltrim($sort, '-');
            $products->orderBy($column, $direction);
        }
 
        $products = $products->paginate(20);
 
        // Генерування URL наступної сторінки з усіма поточними фільтрами
        $nextPageUrl = null;
        if ($products->hasMorePages()) {
            $params = $request->query();
            $params['page'] = $products->currentPage() + 1;
            $nextPageUrl = url()->query('products', $params);
        }
 
        return view('products.index', [
            'products' => $products,
            'nextPageUrl' => $nextPageUrl,
            'filterUrl' => function($newParams) use ($request) {
                // Генерація URL для фільтрів, зберігаючи інші параметри
                $params = array_merge($request->query(), $newParams);
                return url()->query('products', $params);
            }
        ]);
    }
}

Регулярне використання методу query() у вашій програмі створює більш підтримувану кодову базу, усуваючи типові помилки, такі як неправильне кодування параметрів або випадкове перезаписування існуючих рядків запиту

Популярні

Інше, що варто прочитати

12 Оновлено 02 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою

13 Оновлено 02 червня, 2026

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!

53 Оновлено 02 червня, 2026

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу