我有projects
表,每个项目都有order
字段,这是一个整数。
我使用此字段基本上在数据库中手动重新排序项目。在前端我使用sortable.js
库并在简单的拖放之后,我反序列化了一个项目数组,它给了我一个新排序的id
s数组。
每次丢弃后,它都会调用Backend并传递此数组。然后在后端我做了一些事情
$order = 1;
foreach($ids as $id) {
Project::find($id)->update(['order' => $order++]);
}
目前工作正常,但projects
列表很快就会在600左右(目前只有30左右),我担心它会成为一个问题,因为项目清单增长。我想知道什么是替代解决方案呢?
并且因为事件被触发onDrop
,一些用户可能会觉得很讨人喜欢移动它们然后把它们放回去(当放下一个项目时有一个很好的动画)并且它们会激活很多不必要的重新订单基本上。
它必须是onDrop
,就像目前表单的设置方式一样。
我应该尝试计算在FE上移动了哪些项目吗?任何替代品,任何人?
答案 0 :(得分:0)
您的代码在更新之前不必要地获取所有项目。使用此:
Project::whereKey($id)->update(['order' => $order++]);
如果它不是太复杂,只更新移动的项目听起来是一个很好的选择。