Хочу реализовать сортировку контента поста. Например, может быть, что по счету второй контент, может быть создан первее, чем первый контент - Введение.
Конечно же, первым делом в голову приходит идея сделать поле sort_id, и туда записывать численные значения. Но мне кажется, что это слишком примитивно, так как можно вручную написать для второго контента sort_id=7. Возможно, также, что sord_id будет повторяться. Не знаю, до этого с таким не сталкивался. Как бы вы реализовали это?
Проще не значит хуже, если это решает поставленную задачу. Только я бы в в поле sort начинал записывать сотни: 100, 200, 300. На случай, если нужно будет что-то вставить между элементами.
Чем не устраивает вариант сделать сортировку и фильтрацию в стиле аналогичную в rest api?
вида - /items?filter[param1]=gte:10&filter[param2]=eq:somevalue&sort=param1,-param2&limit=10&offset=5
где filter параметры выборки
filter[param1]=gte:10
param1 - название параметра
gte(greater than or equal) - больше или равно
10 - значение
sort=param1,-param2
сортировка ответа по параметрам
по param1 по возрастанию, потом param2 по убыванию
offset - число результатов которые нужно пропустить
limit - количество результатов на выдачу (не более чем)
При необходимости получать информацию пачками - добавить пагинанацию
?page=2&per-page=10
соответственно, номер страницы в результатах при разбивке по 10 значений на страницу
Сочетание сортировки и фильтрации позволит в любом нужном порядке доставать контент(при необходимости расширяя фильтры) и не особо костылить. Конечно кажется избыточным, но делается один раз и переиспользуется потом в других местах. Ну или взять себе понравившиеся части.
Ну, а если нужна принудительная ручная сортировка нужен параметр приоритета/веса(weight) с соответствующей соортировкой по умолчанию. Больше приоритет - ближе к началу списку. sort=weight