Получить последние N записей и порядок по возрастанию - PullRequest
2 голосов
/ 20 февраля 2020

Я создаю простое окно сообщения. Каждое сообщение принадлежит разговору. Я пытаюсь получить последние 5 сообщений в разговоре и упорядочить их по возрастанию.

InboxController. php

public function messages($hashedId)
{
    $conversation = Conversation::where('hashed_id', $hashedId)->first();

    $messages = Message::where('conversation_id', $conversation->id)
        ->latest()
        ->take(5)
        ->get();

    $messages->orderBy('created_at','asc');


    return MessageResource::collection($messages);
}

Ошибка

BadMethodCallException: метод Illuminate \ Database \ Eloquent \ Collection :: orderBy не существует.

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

попробуйте

public function messages($hashedId)
{
    $conversation = Conversation::where('hashed_id', $hashedId)->first();

    $messages = Message::where('conversation_id', $conversation->id)
        ->take(5)
        ->orderBy('created_at','desc')
        ->get();

    return MessageResource::collection($messages);
}
1 голос
/ 20 февраля 2020

Используйте функцию sortBy. Коллекция не имеет функции с именем orderBy.

$collection->sortBy('created_at');

Ссылка: - https://laravel.com/docs/5.8/collections#method -sortby

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