问题描述
我正在使用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 (将#修改为@)