首页 文章

与Laravel分页一起使用的表搜索

提问于
浏览
1

我在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])

Javascript -

<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 回答

  • 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'));
        }
    

相关问题