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() у вашій програмі створює більш підтримувану кодову базу, усуваючи типові помилки, такі як неправильне кодування параметрів або випадкове перезаписування існуючих рядків запиту
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом