【发布时间】:2019-06-21 11:38:06
【问题描述】:
我有一个项目列表显示在一个表格中,该表格使用 laravel 的分页在底部有一个分页。
$projects = projects::where('active', '=', 1)->orderBy('id', 'desc')->paginate(15);
return view('index', compact('projects'));
我还使用 ajax 进行实时搜索以按名称过滤项目。
public function search(Request $request){
if($request->ajax()){
$query = $request->get('query');
if($query != ''){
$data = DB::table('projects')
->where('active', '=', 1)
->whereNull('deleted_at')
->where('name', 'like', '%'.$query.'%')
->get();
}else{
$data = DB::table('projects')->where('active', '=', 1)->whereNull('deleted_at')->orderBy('id', 'desc')->get();
}
}
return response($data->jsonSerialize(), Response::HTTP_OK);
}
Js:
searchProjects = function(query){
$.ajax({
url: "/projects/search",
type: "POST",
data: {
query: query,
},
success: function (response){
displayData(response);
}
})
},
所以首先我通过服务器端加载项目,然后如果我进行搜索,数据会被通过 ajax 的结果替换。
我面临的问题是,每当我进行搜索时,分页都不会更新。 假设搜索显示 5 个结果,如果结果少于 15 个(例如),我希望分页从 1-2 变为 1-1,甚至消失(如果有意义的话)。
有谁知道如何将实时搜索和分页结合起来在 laravel 上协同工作?
【问题讨论】:
-
我已经做过很多次了。您可以在 Eloquent 模型上使用
paginate(limit)。我会用一个例子回复你。 -
好吧等不及了@Adis
-
我添加了一个简单的例子。看看吧。
标签: php ajax laravel search pagination