Сортировка коллекций в Laravel

У меня небольшая проблема с моим контроллером 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);
}

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


person n1ghty    schedule 19.02.2019    source источник


Ответы (1)


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

$sortedData = $collection->sortBy('category', true);
person dhamo dharan    schedule 21.02.2019
comment
Неперехваченный (в обещании) Ошибка: запрос не выполнен с кодом состояния 500 - person n1ghty; 22.02.2019