您好,我正在尝试在mysql表中设置排序,表结构如下所示,并包含500多个记录,我正在laravel 5.5中构建应用程序:
| Id | Name | surname | orderby | address | created_by | updated_by |
|:--:|:------:|:----------:|:-------:|:------------:|:----------:|:----------:|
| 1 | Alice | wonderland | 1 | Disney world | 1 | 1 |
| 2 | donald | duck | 2 | Disney world | 1 | 1 |
| 3 | mickey | mouse | 3 | Disney world | 1 | 1 |
| - | ---- | ---- | --- | ---- | ---- | ---- |
| - | ---- | ---- | --- | ---- | ---- | ---- |
如上表所示,我有一个基于对orderby
列的排序的分页,现在我有一个控制器,在其中配置了一条路由,以通过orderby
列更新表的排序,由于对结果进行了分页,因此仅更新了分页数据中的那些行。但是这500条记录中的480条记录中的其余记录没有得到更新,我使用了具有ajax功能的https://jqueryui.com/sortable/
插件,并且代码如下:
$(document).ready(function () {
$( "#sortable" ).sortable({
placeholder : "ui-state-highlight",
update : function(event, ui){
var page_id_array = new Array();
$('#sortable tr.sort').each(function(){
page_id_array.push($(this).data("id"));
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url:"{{route('order.by.name.table')}}", //my route which is mapped to a controller function
method:"POST",
data:{order:page_id_array},
success:function(data){
toastr.success("Successfully updated order.");
}
});
}
});
});
和下面是我的控制器功能正在更新我的记录的顺序:
public function orderByNameTable(Request $request)
{
$items = $request->input('order');
foreach ($items as $index => $id) {
$item = \App\Models\NameTable::findOrFail($id);
$item->orderby = $index + 1;
$item->id = $id;
$item->save();
}
return $item;
}
我的模型如下所示:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NameTable extends Model
{
public function save(array $options = [])
{
if(!isset($this->created_by)){
$this->created_by = \Auth::user()->id;
}
$this->updated_by = \Auth::user()->id;
parent::save();
}
}
如何更新表orderby
中表中其余480条记录的排序。
请提出业务逻辑。
感谢您的时间和帮助