Laravel: упорядочивание записей по категориям в числовом порядке

#laravel

Вопрос:

В моем приложении я хочу упорядочить свои сообщения по категориям в числовом порядке.
Поэтому, я думаю, мне нужна таблица сопоставления, подобная этой:

 category_id | post_id | sort_order
 

затем настройка своего рода «модели заказа» с конкретными методами, которые обрабатывают все это и используют эту модель как связь с моделью Post.

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

Ответ №1:

Я не уверен на 100%, правильно ли я понимаю ваши потребности, но я предполагаю, что ваши сообщения хранятся в БД. Затем вы можете просто напрямую получать упорядоченные записи из базы данных:

 $posts = DB::table('posts')
            ->orderBy('category_id ', 'asc')
            ->orderBy('post_id', 'asc')
            ->get();
 

Смотрите документацию:
https://laravel.com/docs/8.x/queries#ordering-grouping-limit-and-offset

Я не думаю, что вам нужна модель заказа или что-то подобное, чтобы реализовать это.

Комментарии:

1. Ваше решение могло бы работать, если бы сообщения принадлежали только к одной категории, но в моей модели Post сообщение может фактически принадлежать нескольким категориям, отсюда и модель заказа…

2. можете ли вы рассказать нам, как выглядит ваша структура БД?

3. Структура состоит из 2 базовых таблиц для записей и категорий (id, name, created_at …) плюс сводная таблица для отношения belongsToMany.