关于 Laravel-DataTable 插件的服务器模式,导致的排序和搜索不能同时起作用

目前状况:

  • 1.DataTable下的serverSide:true,为服务器模式
  • 2.数据库查询不使用->get(),交予DataTables
  • 3.我现在的情况是要对有些数据库取出来的数据【不是数据库本身的数据,而是处理过的,比如,数据库里是”nihao“,处理完是“你好”】进行搜索,但是这个处理完的数据他找不到,只能找数据库里有的数据,排序正常
  • 4.如果我查询加上->get(),那搜索处理后的数据是可以搜索的【比如可以搜索到处理后的“你好”,而不是数据库里的nihao】,但是排序又错乱了,我在查询的时候加上orderBy也没有效果
  • 麻烦各位大佬看看是否有一些建议和思路,或者我是否缺少了一些东西,我查询了手册,网络都没用找到确切的解决方法
  • 下面是一部分代码:

控制器:

return \DataTables::of($openedTasksList)
   ->editColumn('cname', function ($openedTasksList) {
                       return $openedTasksList->cname;
                 })
    ->editColumn('id', function ($openedTasksList) {//update if
                        $taskId = '<a href="'.url('tasks-dashboard/edit/'.base64_encode($openedTasksList->id).'/'.base64_encode('opened_tasks')).'?userid='.base64_encode($openedTasksList->shared_to).'" title="'.trans('task.show_task_detail').'" style="text-decoration: underline;color:#0000ff;">'.config('constant.taskIdPrefix').$openedTasksList->id.'</a>';
                       }
                        return $taskId;
                    })
    ->editColumn('created_at', function ($openedTasksList) {
                  return !empty($openedTasksList->created_at) ?Helpers::languageTime(date('m/d/y h:i A', strtotime("+1 hours",strtotime(Helpers::getDateTimeByTimezone($openedTasksList->created_at))))) : '';
                    })
    ->editColumn('arrival_port_location', function ($openedTasksList) {
                 return !empty($openedTasksList->arrival_port_location) ? substr($openedTasksList->arrival_port_location, 0,20) : '';
                    })
    ->editColumn('deliver_to', function ($openedTasksList) {
                return !empty($openedTasksList->deliver_to) ? substr($openedTasksList->deliver_to,0,20) : '';
                    })
    ->addColumn('status_name', function ($openedTasksList) {
                  $taskStatus = Helpers::languageStatus($openedTasksList->status_name);
                  return $taskStatus;
                    })
    ->editColumn('last_free_day', function ($openedTasksList) {
                  return !empty($openedTasksList->last_free_day) ? Helpers::getDateTimeByTimezone($openedTasksList->last_free_day,'date') : '';
                    })
     ->editColumn('delivery_date_time', function ($openedTasksList) {
                  $deliveryDateTime = !empty($openedTasksList->delivery_date_time)?Helpers::languageTime(Helpers::getDateTimeByTimezone($openedTasksList->delivery_date_time)):trans('task.none');

                  return $deliveryDateTime;
                    })
      ->rawColumns(['id', 'status_name', 'delivery_date_time','update_task', 'share_task','task_files','container'])
                    ->make(true);

下面是一部分Model:

   $openedTasksList = DB::table(config('constant.databaseTableNames.tblTasks'))
        ->selectRaw('tasks.id
        ,tasks.container
        ,tasks.created_at
        ,last_free_day
        ,delivery_date_time
        ,arrival_port_location
        ,deliver_to
        ,t2.task_id
        ,status_name
        ,status.id as st_id
        ,tasks.created_by
        ,t2.user_id as shared_to
        ,t3.countsfile
        ,t4.find_name as vessel_name
        ,t5.is_shared
        ,users.first_name
        ,users.last_name
        ,concat(first_name," ",last_name) as cname'
        )->where('status_id', '!=', '9')
         ->joinSub($myActiveTasks_q, 't2', function($join){
               $join->on('tasks.id','=','t2.task_id');
        })->leftJoinSub($myActiveTasks_c, 't3', function($join){
               $join->on('tasks.id','=','t3.task_id')->on('t2.user_id','=','t3.file_userid');
        })->leftjoinSub($is_shared_to, 't5', function($join){
               $join->on('tasks.id','=','t5.task_id')->on('t2.user_id','=','t5.is_shared_by_id');
        })->joinSub($myActiveTasks_b, 't4', function($join){
               $join->on('tasks.ship_line','=','t4.id');
        })->join('status', 'tasks.status_id', '=', 'status.id')
          ->join('users', 't2.user_id', '=', 'users.id');
           return $openedTasksList;

下面是一部分前端:

            lengthMenu=[50,100,200];
            columns=[
               {data: 'cname', name: 'users.first_name',width:'5%'},
              //  {data: 'cname', name: 'cname',width:'5%'},
                {data: 'id', name: 'id',width:'5%'},
                {data: 'container', name: 'container',width:'10%'},
                {data: 'created_at', name: 'created_at',width:'10%'},
                {data: 'status_name', name: 'status.status_name',width:'10%'},
                {data: 'last_free_day', name: 'last_free_day',width:'10%'},
                {data: 'delivery_date_time', name: 'delivery_date_time',width:'10%'},
                {data: 'arrival_port_location', name: 'arrival_port_location',width:'12.5%'},
                {data: 'deliver_to', name: 'deliver_to',width:'12.5%'},
                {data: 'update_task', name: 'update_task', orderable: false, searchable: false,width:'5%'},
                {data: 'share_task', name: 'share_task', orderable: false, searchable: false,width:'5%'},
                {data: 'task_files', name: 'task_files', orderable: false, searchable: false,width:'5%'},
                {data: 'last_name', name: 'users.last_name'},
            ];

 var id="#company_active_tasks_list_table";
 var table=$(id).DataTable();
 var visibleIndex=12;
  if(table){
      table.destroy();
      change_table(id,visibleIndex);
        }

    function change_table(id,visibleIndex){
      var table=$(id).DataTable({
          order:[[0,'desc'],[4,'asc']],
          lengthMenu:lengthMenu,
           processing: true,
            "language": {
                             "processing": "{{trans('task.processing')}}",
                             "paginate": {
                                "first": "{{trans('task.first')}}",
                                "previous": "{{trans('task.previous')}}",
                                "next": "{{trans('task.next')}}",
                                "last": "{{trans('task.last')}}"
                            },
                            "search":"{{trans('company_board.company_task_other_search')}}",
                            "infoFiltered":"{{trans('task.infoFiltered')}}",
                            "zeroRecords":"{{trans('task.zeroRecords')}}",
                             "info": "{{trans('task.info')}}",
                             "infoEmpty": "{{trans('task.info_empty')}}",
                             "emptyTable":"{{trans('task.empty_table')}}",
                             "lengthMenu": "{{trans('task.length_menu')}}",
                          },
            serverSide: true,
            // responsive: true,
            autoWidth:false,
            ajax : {
            url:"{{url('CompanyBoard/getTypeTaskData')}}",
            type:"post",
            data:{"_token":"{{ csrf_token() }}",task_type:choose_tasks_type_val,user_id:user_id},
          },
          columns:columns,
           // initComplete: function () {
           //  this.api().columns().every(function () {
           //          var column = this;
           //          var input = document.createElement('input');
           //          $(input).appendTo($(column.footer()).empty())
           //          .on('change', function () {
           //              var val = $.fn.dataTable.util.escapeRegex($(this).val());

           //              column.search(val ? val : '', true, false).draw();
           //          });
           //      });
           // }
        })
      .on( 'processing.dt', function (e, settings, data) {
           table.columns([visibleIndex]).visible(false);
        });
    }
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!