重新排列Laravel

时间:2018-05-14 11:04:10

标签: php sql laravel laravel-5

我有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上移动了哪些项目吗?任何替代品,任何人?

1 个答案:

答案 0 :(得分:0)

您的代码在更新之前不必要地获取所有项目。使用此:

Project::whereKey($id)->update(['order' => $order++]);

如果它不是太复杂,只更新移动的项目听起来是一个很好的选择。