Laravel order by last post

Laravel проект. Есть Категории. У каждой категории есть пост (one-to-many). Мне требуется при загрузки категорий сортировать их по последне выставленном посту. Т.е. если в категории А только что выставили пост категория А должна быть самом верху. Как это реализовать. Модели Category and Post


Ответы (1 шт):

Автор решения: Yakoffka

Данная задача решается в два действия: Сначала прописываете новое отношение в модели Category:

// App/Category

public function latestPost(): hasOne
{
    return $this->hasOne(\App\Post::class)->latest();
}

а затем в контроллере получить записи из таблицы categories с данным отношением и отсортировать результат:

// App/Http/Controllers/CategoryController

    ...
    $categories = Category::with('latestPost')->get()->sortByDesc('latestPost');
→ Ссылка