我有一个巨大的记录存储在一个需要时间加载的数据库中,所以我考虑使用yajra laravel数据表。我使用的是带有Yajra数据表9.18的laravel版本7。
因此,在第一个页面加载时,只有10条记录必须来自数据库,之后当我单击下一个按钮时,接下来的10条记录应该会出现。
这是我的代码
后端
考虑这条线路1
$vouchers = Voucher::where('status', 'InActive')->orderBy('id', 'desc')->get(); // more than 800000 entries
最后,在循环之后,我将其作为返回
return Datatables::of($dataFinal)->make(true);
前端
processing: true,
serverSide: true,
ajax: "{{ route('vouchers_report') }}",
我在堆栈溢出和其他一些平台上检查了很多答案,但每个人都要求我使用
"pageLength": 10,
但这里的问题是第1行,因为我一次得到了所有的条目。加载花费了太多时间,因此没有逻辑使用pageLength,因为它无法从后端到达前端。
我尝试了很多选择,但根本不起作用。
您应该将查询生成器提供给Datatables,而不是模型集合。
尝试
$vouchers = Voucher::where('status', 'InActive')->orderBy('id', 'desc');
return Datatables::of($vouchers)->make(true);
注意,我省略了->get()
部分。
更好的做法是让Datatables也控制排序部分,但这是第2步。