与 Laravel 分页一起使用的表格搜索
Posted
技术标签:
【中文标题】与 Laravel 分页一起使用的表格搜索【英文标题】:Table search that works with Laravel Pagination 【发布时间】:2017-01-25 17:12:24 【问题描述】:我在 Laravel 中创建了一个带有分页的表,然后向它添加了搜索功能,但是当我尝试搜索时,它只搜索当前页面。我将如何解决这个问题,以便我可以搜索表格所有页面上的信息?我是 Laravel 的新手 :)
表格代码-
<input type="text" id="search" placeholder="Type to search">
<table id="table">
<thead>
<tr>
<th data-field="id">Ident</th>
<th data-field="name">Name</th>
</tr>
</thead>
<tbody>
@foreach ($airports as $airport)
<tr>
<td> $airport->ident </td>
<td> $airport->name </td>
</tr>
@endforeach
</tbody>
</table>
@include('pagination.default', ['paginator' => $airports])
<script type="text/javascript">
var $rows = $('#table tr');
$('#search').keyup(function()
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function()
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
).hide();
);
</script>
【问题讨论】:
【参考方案1】:在 laravel 中,如果你使用分页,它只会加载限制中设置的那些特定记录。
->paginate(15)
当您单击下一页按钮时,只会加载新的记录集。因此,只有您搜索才适用于第一页。
如果你想解决这个问题,你可以像这样对页面加载的控制器进行 ajax 调用
use App/Airport;
public function getAirportList(Request $request,Airport $airport)
if ($request->ajax())
$getResult = $airport->where(function($query)
$query->where('ident',$request->search)
->orWhere('name',$request->search);
);
return view('airports', compact('airports'));
$airports = $airport->paginate(10);
return view('airports',compact('airports'));
【讨论】:
以上是关于与 Laravel 分页一起使用的表格搜索的主要内容,如果未能解决你的问题,请参考以下文章