Laravel Yajra数据表不适用于大数据



我有一个巨大的记录存储在一个需要时间加载的数据库中,所以我考虑使用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步。

最新更新