与 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])

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】:

在 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 分页一起使用的表格搜索的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在带有分页的数据透视表中搜索

如何在Laravel 5.2中构建搜索URL分页?

分页不适用于 POST 动作 laravel 5

搜索结果分页 laravel 5.3

laravel一个页面两个表格分页处理

如何制作与搜索栏和设计一起使用的自定义表格视图