如何使用 Laravel yajra 数据表修复低速问题

问题描述

Laravel 专家!请帮帮我。

我是 laravel 的新手,刚刚使用 yajra 数据表制作了数据表。 问题是当结果超过2k行时它的速度太慢了。

请检查我的代码,并为我提供修复它的最佳解决方案。

请注意,我是初学者,请原谅我的纯编码。

我没有使用 get() 进行收集,也许 Join 和 WhereIn 子句有问题?

控制器:

public function MyController(Request $request)        
    {
    
        if(request()->ajax()) 
        {
            $season_id_array = $request -> season_id_array;
            $season_id_array = explode(",",$season_id_array);
            $league_id_array = $request -> league_id_array;
            $league_id_array = explode(",$league_id_array);
            $weeknumber_date = $request -> weeknumber;
            
            
            $match_result = DB::table('season_match_plan as a')
                ->join('team_list as b','b.team_id','=','a.home_team_id')
                ->join('team_list as c','c.team_id','a.away_team_id')
                ->join('season as d','d.season_id','a.season_id')
                ->join('league as e','e.league_id','a.league_id')
                ->join('season_league_team_info as f',function($join) 
                    {
                        $join->on('a.season_id','f.season_id');
                        $join->on('a.home_team_id','f.team_id');
                    })
                ->join('season_league_team_info as g','g.season_id');
                        $join->on('a.away_team_id','g.team_id');
                    })
               
                
                ->leftJoin('odds as h2',function($join) 
                    {
                        $join->on('a.match_id','h2.match_id');
                        $join->on('h2.bookmaker_id',DB::raw('(SELECT id FROM bookmakers WHERE bookmaker_name = "highest")'));
                    }
                )
                ->leftjoin('real_price_dcl as r','a.DCL_refer_id','r.id')
                -> where(
                    'a.status','END'
                )
                
                -> where(function($q) use($season_id_array){
                   
                    $q -> orwhereIn('a.season_id',$season_id_array);
                    
                })
                -> where(function($q) use($league_id_array){
                    
                    $q -> orwhereIn('a.league_id',$league_id_array);
                    
                    
                })
               
                ->when($weeknumber_date,function($query,$weeknumber_date) {
                    $query -> where( 'c_WN',function ($q)use($weeknumber_date){
                        $q -> select('week') ->from('date_week_map') ->where('date',$weeknumber_date);
                    });
                })
                -> select(
                    DB::raw('e.`league_title` AS League'),DB::raw('d.`season_title` AS Season'),DB::raw('a.`date` AS Date'),DB::raw('a.c_WN'),DB::raw(" CONCAT(b.`team_name`,' : ',c.`team_name` ) AS Game"),DB::raw("CONCAT('<a href=\"eachMatch/',TO_BASE64(a.`match_id`),'\" target=\"_blank\">',CONCAT(a.`total_home_score`,a.`total_away_score`),'</a>') AS Score"),'a.total_home_score','a.total_away_score',DB::raw('b.`team_name` AS Home_team_name'),DB::raw(' f.`S_H_ranking` AS Static_HRank'),DB::raw(' a.`D_Home_RS_8` AS Dynamic_HRS_8'),DB::raw(' a.`D_Home_RS_6` AS Dynamic_HRS_6'),DB::raw(' a.`home_team_score` AS Home_score'),DB::raw(' a.`home_team_strength` AS Home_strength'),DB::raw(' c.`team_name` AS Away_team_name'),DB::raw('g.`S_A_ranking` AS Static_ARank'),DB::raw('a.`D_Away_RS_8` AS Dynamic_ARS_8'),DB::raw('a.`D_Away_RS_6` AS Dynamic_ARS_6'),DB::raw('a.`Away_team_score` AS Away_score'),DB::raw('a.`Away_team_strength` AS Away_strength'),DB::raw('CONCAT(f.`S_H_ranking`," v ",g.`S_A_ranking`) AS staticRank'),DB::raw('CONCAT(a.`D_Home_ranking_8`,a.`D_Away_ranking_8`) AS DynamicRank_8'),DB::raw('CONCAT(a.`D_Home_ranking_6`,a.`D_Away_ranking_6`) AS DynamicRank_6'),DB::raw('h2.Home AS highest_Home'),DB::raw('h2.Draw AS highest_Draw'),DB::raw('h2.Away AS highest_Away'),DB::raw('r.H_price AS Real_Home'),DB::raw('r.D_price AS Real_Draw'),DB::raw('r.A_price AS Real_Away')

              )
              ->orderBy('a.match_id');

            
            return DataTables()::of($match_result)
                ->editColumn('Score',function($match_result) {
                    return html_entity_decode($match_result->Score);
                })
                
                ->rawColumns(['Score'])
                
                ->make(true);
                
        }
    }

JS:

   $('#table').DataTable({
        processing: false,lengthMenu: [[10,50,100,-1],[ 10,"All"]],pageLength: 100,destroy: true,serverSide: true,ajax: {
          url: "showRanking",type: 'POST',data:
          {
            _token : $('meta[name="csrf-token"]').attr('content'),season_id_array : season_id_array,league_id_array : league_id_array,weeknumber : weeknumber,}
          
          },columns: [
                
                { data: 'League',name: 'League',width: '200px' },{ data: 'Season',name: 'Season' },{ data: 'Date',name: 'a.Date' },{ data: 'c_WN',name: 'c_WN' },{ data: 'Game',name: 'Game',width:'200px'},{ data: 'Score',name: 'Score' },{ data: 'Home_team_name',name: 'Home_team_name'},{ data: 'Static_HRank',name: 'Static_HRank' },{ data: 'Dynamic_HRS_8',name: 'Dynamic_HRS_8'},{ data: 'Dynamic_HRS_6',name: 'Dynamic_HRS_6'},{ data: 'Home_score',name: 'Home_score'},{ data: 'Home_strength',name: 'Home_strength'},{ data: 'Away_team_name',name: 'Away_team_name'},{ data: 'Static_ARank',name: 'Static_ARank' },{ data: 'Dynamic_ARS_8',name: 'Dynamic_ARS_8'},{ data: 'Dynamic_ARS_6',name: 'Dynamic_ARS_6'},{ data: 'Away_score',name: 'Away_score'},{ data: 'Away_strength',name: 'Away_strength'},{ data: 'staticRank',name: 'staticRank'},{ data: 'DynamicRank_8',name: 'DynamicRank_8'},{ data: 'DynamicRank_6',name: 'DynamicRank_6'},{ data: 'highest_Home',name: 'highest_Home'},{ data: 'highest_Draw',name: 'highest_Draw'},{ data: 'highest_Away',name: 'highest_Away'},{ data: 'Real_Home',name: 'Real_Home'},{ data: 'Real_Draw',name: 'Real_Draw'},{ data: 'Real_Away',name: 'Real_Away'},],}
      );

因此排序和搜索在 Front 上也不起作用。

请帮助我,我是 Laravel 初学者。

此致。

解决方法

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

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

小编邮箱: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...