我正在使用laravel 5.0 我也使用datatable jquery插件来显示网格。
控制器mehtod
public function index() {
$jobs = \App\Job::orderBy('created_at', 'DESC')->limit(1000)->get();
return View::make('jobs.index', ['jobs' => $jobs]);
}
问题: 现在我将 - > limit(1000)硬编码为数据表网格中的1000个作业进行显示 它,但我有超过1000条记录要显示。
我想要什么? 我想用网格显示500条记录,然后显示500条记录。 我不确定是否有可用的回调数据表插件功能? 我需要一种动态的方式来加载下一个500
注意: 我不愿意这种滚动解决方案 https://datatables.net/extensions/scroller/examples/initialisation/server-side_processing.html
答案 0 :(得分:2)
您可以使用ajax数据源:
请访问:https://datatables.net/examples/ajax/objects.html
示例PHP脚本:
// function will process the ajax request
public function getMembers(Request $request) {
$draw = $request->get('draw');
$start = $request->get('start');
$length = $request->get('length');
$search = (isset($filter['value']))? $filter['value'] : false;
$total_members = 1000; // get your total no of data;
$members = $this->methodToGetMembers($start, $length); //supply start and length of the table data
$data = array(
'draw' => $draw,
'recordsTotal' => $total_members,
'recordsFiltered' => $total_members,
'data' => $members,
);
echo json_encode($data);
}
示例JavaScript:
$('#all-member-table').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
url: base_url+"ajax/members"
},
"columns": [
{ data: '1' },
{ data: '2' },
{ data: '3' },
{ data: '4' },
{ data: '5' },
]
} );
示例HTML:
<table id="all-member-table">
<thead>
<tr>
<th>Column1</th>
<th>Column2</th>
<th>Column3</th>
<th>Column4</th>
<th>Column5</th>
</tr>
</thead>
</table>
答案 1 :(得分:2)
我认为以上答案应扩展为搜索功能。
更新答案;
$filter = $request->get('search');
$search = (isset($filter['value']))? $filter['value'] : false;
where('somecolumnonyourdb','like', '%'.$search.'%')
这对我有用
答案 2 :(得分:0)