Datatables 通常需要一个 QueryBuilder 对象,一旦你调用paginate()
你基本上是在使用一个集合。您可以使用Datatables::collection()
,但您不希望这样做,因为它要求您从数据库中获取所有内容,而您不想这样做。
使用 yajra 您应该使用 ajax 调用来分页,它将处理分页(不是 Laravel),因此它需要 QueryBuilder 执行计数等以返回分页数据和元数据。
最好的选择是创建一个单独的数据表 (api) 路由,并检查
datatables.net 服务器端处理
编辑:
按照服务器端处理的示例,您需要执行以下操作:
$(document).ready(function() {
$('#yourDatatableId').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "/api/datatables/order"
} );
} );
并让路线返回如下内容:
$builder = Order::where('order_status', 'Delivered');
return Datatables::of($builder)->make(true);
对于 html 部分,请查看示例,基本上您可以在 javascript 中定义列,它将根据返回的数据填充您的行。还要检查数据表服务器端手册,在那里你会看到start
和length
,它将被前端数据表库用于分页。