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

实现Laravel排序功能的laravel-sortable包 包是Laravel社区中一个非常实用的扩展包,它可以帮助开发者在模型中轻松实现排序功能。这一章节将重点介绍如何安装和配置包,以及它所具备的核心功能和API接口。sortable()在Laravel模型中定义排序字段和排序方式是实现数据排序的关键步骤。开发者通过模型可以组织应用程序的数据逻辑,并与数据库表紧密关联。本章将详细指导开发者如何在Laravel模型中集成,并设置合适的排序字段和排序方式。在Laravel中,模型通常与数据库表对应。 阅读详情

概述:

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

准备:

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之间:
在这里插入图片描述
那么按照唯一性,id15就变成了排序3,此时的排序为[24=>1、19=>2、15=>3、18=>3、17=>4、16=>5],这里有两个3,因此第一个3后面的就需要重新排序变成[24=>1、19=>

laravel-admin-listbox-sortable:ListboxSortable是基于Laravel-admin表单组件的扩展,实现了listbox的拖拽排序功能 ListboxSortable for Laravel-admin 1.6+ ListboxSortable是基于Laravel-admin表单组件的扩展,实现了listbox的拖拽排序功能。 Require Laravel-admin >= 1.6 Installation 运行下面的命令安装: "composer require ckhan/laravel-admin-listbox-sortable" 然后,运行下面的命令发布静态文件: "php artisan vendor:publish --provider=CKHan\ListboxSortable\ListboxSortableServiceProvider --force" Configuration 不需要其他额外的配置 Usage 使用方法和Laravel-admin中表单组件listbox是一致的: $for 立即下载

相关推荐

rutorika-sortable, 向 Laravel Eloquent模型添加可以排序的行为 演示 http.zip

rutorika-sortable, 向 Laravel Eloquent模型添加可以排序的行为 演示 http Laravel 5---演示http://sortable5.boxfrommars.ru/http://sortable5.boxfrommars.ru/grouped ( 可以排序的组演示)http

LabVIEW状态机实战:用STM32+DHT11搭建温湿度监测系统(附完整VI源码)

本文详细介绍了如何利用LabVIEW状态机模式与STM32微控制器、DHT11温湿度传感器构建温湿度监测系统。通过硬件选型、状态机设计、LabVIEW程序实现及系统优化等环节,提供了一套完整的解决方案,并附有VI源码,助力开发者快速实现嵌入式温湿度监测应用。

weixin_42549723的博客 519

python实现语音信号的分帧、加窗、预处理

语音信号实现分帧、加窗、预处理音频文件读取预加重分帧加窗 音频文件读取 librosa是非常强大的python语音信号处理库。 读取音频: 使用语句librosa.load(path, sr=22050, mono=True, offset=0.0, duration=None)读取音频文件,默认的采样率是22050,若要保留音频的原始采样率,使用sr=None。 其中: path:表示音频文件的路径 sr:表示采样率 mono:bool,是布尔类型,表示是否将信号转换为单声道 offset:float,后

weixin_45272908的博客 1万+

从DDH到FastANI:原核生物分类黄金标准的进化史与技术对比

本文系统梳理了原核生物分类标准从DDH到FastANI的四次技术革命,详细解析了95%相似度阈值的科学依据及应用场景。通过对比DDH、16S rRNA、ANI和FastANI的技术特点与性能指标,为微生物研究者提供基因组分类的实战指南,并展望第三代测序时代的分类新挑战。

weixin_29275257的博客 413

攀藤PMS系列传感器STM32驱动开发与数据解析实战

本文详细介绍了攀藤PMS系列传感器与STM32微控制器的驱动开发与数据解析实战,涵盖硬件连接、数据协议解析、驱动源码编写及数据处理优化。重点解析了传感器数据帧结构,提供了完整的STM32驱动实现代码,并分享了实际应用中的问题排查与性能优化经验,帮助开发者快速实现高精度颗粒物浓度检测。

milk8的博客 348

ROS2机械臂实战:从基础控制到视觉抓取

本文详细介绍了ROS2机械臂从仿真环境搭建到视觉抓取的全流程实战指南。内容涵盖使用Gazebo搭建仿真环境、编写基础控制节点、集成视觉感知进行目标检测与坐标变换,并设计状态机逻辑实现自动化抓取。通过系统集成与联调,帮助开发者掌握ROS2机械臂开发的核心技能。

weixin_29197699的博客 449

[Dify] HTTP 请求节点总是调不通?先把请求头、参数、变量和返回 JSON 拆开查

这篇文章围绕 Dify HTTP 请求节点调不通、接口能通但流程不稳定、返回 JSON 后续节点读不到等问题展开,从 Method、URL、Header、Body、变量映射和返回字段提取几个角度梳理排查顺序。适合正在把 Dify Workflow 接入企业微信、CRM、工单系统或内部接口的读者阅读,帮助你把接口调用从一次性跑通推进到可复用、可验证的业务流程。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 3944

《QT+PCL》点云配准进阶——GROR配准

GROR点云配准

阁楼 1318

Allegro层叠中的介电常数如何填写指导说明

在用Allegro进行PCB设计的时候,需要在cross-section中设置好每个层的信息,包括层命名,每层的厚度等等信息。但是对于有仿真需求或者等长设计需要使用ps作为延时单位的设计的时候,需要额外在层叠中填写介电常数的值,如下图。按照经验值填写为2.8,因为外层和平面层不会被树脂填充,铜皮层还是完整的铜皮,如下图。对应层叠将每层介质的介电常数的数值填入到PCB中去,油墨的介电常数填4。层叠中只给出了每个介质的介电常数,铜皮的介电常数却没有给出。所以正确填写介电常数的结果如下图。需要按照下面的规则来。

weixin_54787054的博客 1392

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: MYSQL如何让主键使用BTREE索引
下一篇: 浅谈面试经验(面试官角度)
Tim_PHPer
博客等级 码龄11年 227粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值