Задать вопрос
@Fear1

Как отсортировать по смежной таблице Laravel?

Есть запрос
Card::leftJoin('comments', 'cards.id', '=', 'comments.card_id')
            ->select('cards.id')
            ->orderBy('comments.created_at', 'desc')
            ->groupBy('id')
            ->get();

Джойнит, сортирует по дате создания комментария и группирует по card_id. Но группирует неправильно. Не пойму где ошибка...

Результат запроса:
5bc9af8e1f4bb968367913.png

Сортировка в БД по дате создания:
5bc9afa2f2e81644387549.png
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Fear1 Автор вопроса
Получилось сделать через фильтр следующим образом:

Card::leftJoin('comments', 'cards.id', '=', 'comments.card_id')
        ->where('comments.type', 'comment')
        ->select('cards.*')
        ->orderBy('comments.created_at', 'desc')
        ->groupBy('comments.id')
        ->get()
        ->filter(function($item, $key) {
            if(!in_array($item->id, $this->alreadySelectedCards)) {
                $this->alreadySelectedCards[] = $item->id;
                return true;
            }
        });


Но это костыль и, мне кажется, есть нормальный способ решить такую тривиальную задачу...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы