在排序和提取大数据(yajra数据表)时遇到问题

时间:2019-05-14 07:00:38

标签: laravel laravel-5 large-data yajra-datatable

在从yajra datatable服务器端提取大数据同时应用列排序时,我遇到了问题。

对于列排序,我在查询构建器中使用了get()。如果我避免使用它,而使用orderBy,它可以很好地工作并且可以更快地获取记录,但是问题是列排序不起作用。

$query = DB::table('clients');
        if(Auth::user()->role_id==2)
        {

           $clients=  $query->whereRaw('user_id',Auth::id());


               }
        else if(Auth::user()->role_id==3)
        {
            $getCompanyId = User::where('id',Auth::id())
                                ->first();

                   $clients=  $query->whereRaw('user_id',$getCompanyId['added_by']);                          


        }
       $clients= $query->orderBy('id');

        $clients = $query->select();
        $clients = $query->get();
        $datatables = datatables()->of($clients)


            ->addColumn('action', function ($clients) {

                       return '<button class="btn btn-xs buttonhover" data-id='.$clients->id.' data-backdrop="static" onclick="editClient(this);"><i class="fa fa-edit" aria-hidden="true"></i>&nbsp;&nbsp;Edit</button>

                                <button class="btn btn-xs buttonhover2" data-id='.$clients->id.' onclick="viewDetails(this);"><i class="fa fa-eye" aria-hidden="true"></i>&nbsp;View</button>

                              <button class="btn btn-xs buttondeletehover"data-id='.$clients->id.' onclick="confirmAlertBox(this)"><i class="fa fa-trash" aria-hidden="true"></i>&nbsp;&nbsp;Delete</button>';
            })

            ->make(true);
        return $datatables;

1 个答案:

答案 0 :(得分:0)

不要在数据表中使用in,也不要获取()数据。而是使用雄辩的方法生成datatables对象并查询Sellect:

$users = User::query();
    return DataTables::eloquent($users)
    ->toJson();

或仅使用order by生成雄辩的对象:

$users = User::orderBy('id');

Eloquent Data Source

相关问题