Laravel Yajra数据表无法处理大数据

Laravel Yajra数据表无法处理大数据,laravel,datatables,yajra-datatable,Laravel,Datatables,Yajra Datatable,我有一个巨大的记录存储在一个需要时间加载的数据库中,所以我考虑使用yajra laravel数据表。我使用的是带有Yajra数据表9.18的laravel版本7 因此,在第一次页面加载时,只有10条记录必须来自数据库,之后当我单击next按钮时,接下来的10条记录应该来自数据库 这是我的密码 后端 以第1行为例 $vouchers = Voucher::where('status', 'InActive')->orderBy('id', 'desc')->get(); // mor

我有一个巨大的记录存储在一个需要时间加载的数据库中,所以我考虑使用yajra laravel数据表。我使用的是带有Yajra数据表9.18的laravel版本7

因此,在第一次页面加载时,只有10条记录必须来自数据库,之后当我单击next按钮时,接下来的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') }}",
我在stack overflow和其他一些平台上检查了许多答案,但每个人都要求我使用

"pageLength": 10,
但这里的问题是第1行,因为我一次获取所有条目。加载会花费太多时间,因此没有使用pageLength的逻辑,因为它无法从后端到达前端


我尝试了很多选项,但根本不起作用。

您应该将查询生成器提供给数据表,而不是模型集合

试一试

请注意,我遗漏了
->get()
部分


更好的做法是让Datatables也控制排序部分,但这是第2步。

如果我使用此模式,那么如何使用前端中的laravel模型关系访问数据?如果省略
->get()
方法调用,Datatables将在数据库级别执行排序、搜索和分页。在这之后,它将在引擎盖下执行一个
->get()
,因此您仍然可以在前端获得相同的信息。您可以使用Laravel的
with()
方法加载关系。另见
$vouchers = Voucher::where('status', 'InActive')->orderBy('id', 'desc');
return Datatables::of($vouchers)->make(true);