Добавил тег Laravel, так как на нем решение применил свое, и выкладываю:
Бэкенду отправляю список элементов так:
$(this).sortable('toArray', {attribute: 'data-id'})
А элементы выглядят так:
<ul id="#sortable">
<li data-id="5">Item 1</li>
<li data-id="6">Item 2</li>
<li data-id="9">Item 3</li>
</ul>
5,6,9 - это ID элементов в базе данных.
В результате приходит на бэкенд это так:
[5,6,9]
Соответственно, ключ элемента является индексом
Обрабатываю так:
$elements = Elements::where('user_id',$user_id)->get();
foreach($request->input('sort') as $k => $v)
$rules['sort.'.$k] = 'required|integer';
$validation = Validator::make($request->only('sort'), $rules);
if($validation->passes()) {
foreach($elements as $k => $v) {
$sort_id = array_search($v['id'], $request->input('sort'));
if($sort_id && $v['sort'] != $sort_id) {
$v['sort'] = $sort_id;
$v->save();
}
}
} else {
abort(400);
}