Laravel Datatable设置行数限制失效,如何实现指定条数显示?
解决Laravel Datatable仅显示指定行数的问题
嘿,我来帮你理清楚这个问题——你用setTotalRecords(5)没效果是因为这个方法根本不是用来限制返回数据行数的,它的作用完全不一样!
先纠正一个误解:setTotalRecords()的真实作用
setTotalRecords()是用来手动设置Datatable返回的总记录统计数的,比如当你自己做了复杂的统计逻辑、或者不想让Datatable自动查询总条数的时候才会用到它。举个例子:如果你的实际数据库里有100条数据,但你想让Datatable前端显示“共5条”,这时候才会用这个方法,它不会改变实际返回给前端的数据量。
正确的实现方式:限制Eloquent查询结果
要只显示5条数据,你需要直接在Eloquent查询里用take()或者limit()方法来限制返回的行数,这才是类似SQL里LIMIT的效果。
修改后的代码应该是这样的:
// 构建查询并限制返回5条数据 $visitas = Visita::select(['id','f_salida','f_entrada','nombre', 'empresa','visitado_id']) ->orderBy('f_entrada', 'desc') ->take(5); // 这里用take(5)或者limit(5)都可以,效果完全一致 // 传给Datatable并返回 return Datatables::of($visitas)->make(true);
或者你也可以把查询直接写到of()方法里,让代码更紧凑:
return Datatables::of( Visita::select(['id','f_salida','f_entrada','nombre', 'empresa','visitado_id']) ->orderBy('f_entrada', 'desc') ->take(5) )->make(true);
额外提示:处理前端分页(如果需要)
如果你的Datatable前端默认开启了分页功能,即使你只返回5条数据,前端可能还是会显示分页控件。如果想彻底隐藏分页,你可以在前端的Datatable配置里加上:
$('#your-table-id').DataTable({ // 其他配置... paging: false, // 关闭分页 info: false // 关闭底部的“显示X到X条,共X条”信息 });
内容的提问来源于stack exchange,提问作者El Hombre Sin Nombre
相关产品推荐
相关产品推荐

