Сортировка коллекции в алфавитном порядке - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь распечатать мою коллекцию в алфавитном порядке.Вот что я попробовал внутри моего контроллера:

public function listForCategories(Category $category)
    {
        return $category->subcategories->sortBy('title');
    }

Но это не сортирует мой вывод: / Пожалуйста, помогите!

Ответы [ 4 ]

0 голосов
/ 18 сентября 2018

$ category-> subcategories-> sortBy ('title') -> values ​​() -> all ();

Я не знаю точной иерархии, но вы можете использовать решение в соответствии с вашими потребностями:

Метод sortBy сортирует коллекцию по заданному ключу.В отсортированной коллекции хранятся исходные ключи массива,

, поэтому в этом примере мы будем использовать метод значений для сброса ключей к последовательно пронумерованным индексам:

Вот пример:

$ category = collect ([['title' => 'Desk', 'price' => 200],

['title' => 'Chair', 'price' => 100],

['title' => 'Bookcase', 'price' => 150],

]);

$ sorted = $ category-> sortBy ('title ') -> values ​​() -> all ();

Result-: [[' title '=>' Bookcase ',' price '=> 150],

['title '=>' Chair ',' price '=> 100],

[' title '=>' Desk ',' price '=> 200],]

0 голосов
/ 11 сентября 2018

Метод sortBy сортирует внутренние поля, однако сохраняет исходные ключи, поэтому, если вы хотите получить отсортированные значения, вам следует вызвать метод values() после сортировки коллекции.Таким образом вы получите обратно отсортированную коллекцию.

return $category->subcategories->sortBy('title')->values()->all();

0 голосов
/ 11 сентября 2018

Попробуйте использовать orderBy, когда вы извлекаете их из базы данных (я полагаю, вы делаете)

public function listForCategories(Category $category)
{
    return $category->subcategories()->orderBy('title')->get();
}
0 голосов
/ 11 сентября 2018

попробуй return $category->subcategories->orderBy('title');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...