【问题标题】:Table search that works with Laravel Pagination与 Laravel 分页一起使用的表格搜索
【发布时间】: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])

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>

【问题讨论】:

    标签: javascript php mysql laravel pagination


    【解决方案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'));
    }
    
    

    【讨论】:

      猜你喜欢
      • 2017-08-25
      • 2019-05-06
      • 1970-01-01
      • 2018-09-10
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      相关资源
      最近更新 更多