分享Laravel拖拉排序功能的实现

本文分享了在 Laravel 中实现拖拉排序功能的思路和方法,包括排序数据的存储实现,算法选择,以及接口实现的细节。通过使用 decimal(11,4) 类型的 sort 字段保持唯一性,并讨论了浮点数排序的优化空间和重置策略,以应对大量数据的排序更新问题。" 112174943,10325282,AE蒙版与遮罩详解:兄弟间的失散与重逢,"['视频编辑', '特效处理', 'Adobe After Effects', '图形处理']
摘要由CSDN通过智能技术生成

概述:

最近公司的后台管理新需求是做一个某列表的拖拉排序功能,本来认为这个功能实现也挺简单的,但实际做起来,其实也会遇到一些问题。因此,我决定写篇文章来给大家分享一下。

准备:

1、排序的数据存储实现分析:

既然是排序,那么就是要求每行数据要有明确的前后区分,也就是要求排序的字段有唯一性,唯一性当然会想起表主键id,但是我们不可能对主键进行修改的,这样会导致一些根据主键关联的可能会出现问题。
那我们只能创建一个新的字段decimal(11,4)类型的sort,并且建立唯一索引,来区分这个排序了。这里为什么是decimal(11,4)类型,而不是int类型呢,这个我会在文章后面解释。

2、排序的算法选择:

原始排序
假设我这里的排序是[24=>1,19=>2,18=>3,17=>4,16=>5,15=>6]
拖拉排序有可能是拖到第一条,也有可能拖到最后一条,还有可能拖到中间一条。
但是无论数据从哪个位置拖到新位置,无非是在新位置的前后两条排序中间创建一个新的排序,而它旧的排序就删除。
比如说我这里的id15想要拖到id19与id18之间:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值