Метод sortKeysUsing у Laravel дозволяє детально контролювати порядок ключів колекцій, що дає змогу реалізувати кастомну логіку сортування, виходячи за межі стандартного алфавітного порядку
Ця функція особливо корисна при роботі з масивами конфігурацій, формами з визначеними порядками відображення тощо, коли послідовність ключів важлива для обробки чи відображення
$collection->sortKeysUsing('strnatcasecmp');
// або
$collection->sortKeysUsing(function ($a, $b) {
return $a <=> $b;
});
Ось приклад реалізації пріоритетного порядку меню:
<?php
namespace App\Services;
use Illuminate\Support\Collection;
class NavigationManager
{
public function getOrderedNavigation(array $menuItems): Collection
{
return collect($menuItems)
->sortKeysUsing(function ($a, $b) {
// Витягуємо префікси позицій (pos1_, pos2_ тощо)
$positionA = $this->extractPosition($a);
$positionB = $this->extractPosition($b);
// Якщо обидва мають префікси, сортуємо за числовим значенням
if ($positionA !== null && $positionB !== null) {
return $positionA <=> $positionB;
}
// Префікси позицій йдуть перед ключами без префіксів
if ($positionA !== null) return -1;
if ($positionB !== null) return 1;
// Групуємо елементи за секцією
$sectionA = explode('_', $a)[0];
$sectionB = explode('_', $b)[0];
if ($sectionA !== $sectionB) {
// Користувацький порядок секцій
$sections = ['dashboard', 'users', 'content', 'settings'];
$indexA = array_search($sectionA, $sections);
$indexB = array_search($sectionB, $sections);
if ($indexA !== false && $indexB !== false) {
return $indexA <=> $indexB;
}
}
// За замовчуванням сортуємо в природному, нечутливому до регістру порядку
return strnatcasecmp($a, $b);
});
}
private function extractPosition(string $key): ?int
{
if (preg_match('/^pos(\d+)_/', $key, $matches)) {
return (int) $matches[1];
}
return null;
}
}
Метод sortKeysUsing змінює порядок упорядкування даних колекції, що дозволяє встановлювати семантичний порядок відповідно до специфічних вимог вашого застосунку
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку
Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом