Laravel使用分页数据更新表的顺序

时间:2019-05-14 11:25:39

标签: php jquery mysql laravel laravel-5

您好,我正在尝试在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条记录的排序。

请提出业务逻辑。

感谢您的时间和帮助

0 个答案:

没有答案