yajra \ DataTables需要很长时间才能带来数据laravel

问题描述

我正在使用yajra \ DataTable服务器端来带来数据,问题是即使仅2行也要花费很长时间来带来数据, 这是我的代码 $ module_name = $ this-> module_name; $ module_model = $ this-> module_model;

    $$module_name = $module_model::select('id','name','status','start_time','finish_time','duration','created_at')->orderBy('id','desc');

    $examLists=[];

    if(! Auth::user()->hasAnyRole(['super admin'])){
        //Kullanıcıya atanan sınavları görmek için
        //Kullanıcı ile aynı kategoride olan sınavlar seçilmektedir.

        foreach (Auth::user()->userCategory as $cat) {

            foreach(UserCategory::findOrFail($cat->id)->exams as $exam) {
                if(  Auth::user()->hasAnyRole(['student','yeni Öğrenci']))
                {
                    if($exam['status']=='publish')
                        array_push($examLists,$exam->id);
                    $$module_name = $$module_name->where('finish_time','>',Carbon::now());
                }



                else{

                    array_push($examLists,$exam->id);}

            }
        }
        $$module_name = $$module_name->whereIn('id',$examLists);

    }

    $now = Carbon::now();
    return Datatables::of($$module_name)
        ->editColumn('status',function ($data) {
            if(isset($data->status) && $data->status=='publish')
                return  __("labels.backend.publish");
            if(isset($data->status) && $data->status=='new')
                return  __("labels.backend.new");
            if(isset($data->status) && $data->status=='preparing')
                return  __("labels.backend.prepare");
            if(isset($data->status) && $data->status=='ready')
                return  __("labels.backend.ready");

        })
        ->addColumn('action',function ($data) {
            $module_name = $this->module_name;
            return view ('backend.includes.action_column',compact('module_name','data'));

        })
        ->addColumn('date_name',function ($data){
            return '';

            $module_name = $this->module_name;
            $date = date("d-m-Y H:i",strtotime($data->start_time));
            $date= Carbon::parse($date);

            $diff = $date->diffForHumans($now);


            $date2 = date("d-m-Y H:i",strtotime($data->finish_time));
            $date2= Carbon::parse($date2);
            $diff2 = $date2->diffForHumans($now);
            if($data->start_time > Carbon::now())
                return "<span class=\"badge badge-primary\" style='color: white;text-align: center;  height: 18px;'>".__('exams.willstart')."( ".$diff." Başlayacak) </span>";
            if($data->start_time < Carbon::now() && $data->finish_time > Carbon::now())
                return "<span class=\"badge badge-success\" style='color: white;text-align: center;  height: 18px;'>".__('exams.exam_continue'). "( ".$diff2." Bitecek) </span>";
            if( $data->finish_time < Carbon::now())
                return "<span class=\"badge badge-danger\" style='color: white;text-align: center ; height: 18px;'>".__('exams.finished'). "</span>";

        })

      
        ->editColumn('duration','{{$duration}} dk.')
        ->rawColumns(['name','action','duration'])
        ->orderColumns(['id'],'-:column $1')
        ->make(true);

这是JavaScript代码

  $('#datatable').DataTable({
        processing: true,serverSide: true,autoWidth: true,responsive: true,ajax: '{{ route("backend.$module_name.index_data") }}',columns: [
            {data: 'id',name: 'id'},{data: 'name',name: 'name'},{data: 'email',name: 'email'},{data: 'status',name: 'status'},{data: 'user_roles',name: 'user_roles'},{data: 'action',name: 'action',orderable: false,searchable: false}
        ]
    });

花了2秒钟以上的时间才加载2行 那只是2行的高延迟,所以我在考虑如果我有10000条记录会发生什么情况。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...