Есть пользователи 'users' (id, name)
и каждый пользователь может создать свои категории 'categories' (id, user_id, title)
Нужно сделать так, чтобы пользователь мог менять категории местами
Например:
1 - первая категория
2 - вторая категория
3 - третья категория
И он может просто переставить 3к на место 1к и получится вот так:
1 - третья категория
2 - вторая категория
3 - первая категория
На данный момент я просто добавил в 'categories' поле 'index'. Таким образом перед записью новой категории я просто считаю сколько всего категорий у пользователя и присваиваю этот номер index'у
При удалении категории, я делаю index-- всем категориям у которых index был больше чем у удаленной категории
при изменении порядка я получаю oldIndex и newIndex от перемещенной категории и в зависимости от того что больше или меньше меняю index у тех категорий который находится в промежутке от старого к новому
Но тут возникает проблема
если у нас 1000000 категорий и человек перетаскивает с 1000000 места на 1, то произойдет 1000000+1 записей в бд
потому что я не нашел как делать автоматически средствами mysql или laravel изменение +1/-1
поэтому приходится брать в laravel коллекцию элементов и выполнять foreach