Сортировка коллекций в Ларавеле - PullRequest
0 голосов
/ 19 февраля 2019

У меня небольшая проблема с моим контроллером Laravel и его сортировкой:

public function index()
{
    $achievements = Achievement::all();
    $news = News::all();
    $livingspaces = Livingspace::all();
    $therapies = Therapy::all();
    $events = Event::all();
    $collection = collect();

    foreach ($achievements as $achievement) {
        $collection->push($achievement);
    }
    foreach ($news as $new) {
        $collection->push($new);
    }
    foreach ($livingspaces as $livingspace) {
        $collection->push($livingspace);
    }
    foreach ($events as $event) {
        $collection->push($event);
    }
    foreach ($therapies as $therapy) {
        $collection->push($therapy);
    }

    $sortedData = $collection->sortBy('category')->sortByDesc('created_at');
    return response()->json([
        'sortedData' => $sortedData
    ], 200);
}

Это не сортировка вообще.Он должен сортировать, если после данных в метке времени create_at, которая выходит из коробки при создании новой миграции для контроллера Laravel.Но я не могу отсортировать данные.Я думаю, что это как-то связано с передачей данных из БД непосредственно в коллекцию, и он вообще не ищет "create_at".Он не дает никаких ошибок или чего-то еще, просто ничего не делает.То же самое относится и к sortBy.

1 Ответ

0 голосов
/ 21 февраля 2019

Метод sortByDesc имеет ту же сигнатуру, что и метод sortBy, но сортирует коллекцию в обратном порядке.По умолчанию sortBy выполняет восходящую операцию.Если вы хотите отсортировать по убыванию:

$sortedData = $collection->sortBy('category', true);
...