我对Laravel的->paginate()
方法有疑问。基本上,我有一个动态查询,该动态查询基于GET
传递给控制器的参数,其中有或没有::where()
子句。没有::where()
,我可以调用->paginate(100)
结果集并将其拆分为100页。当尝试执行相同的操作时,::where(...)->paginate(100)
我得到0个结果。
刚开始我以为我的查询是错误的,但是删除->paginate(100)
并将其替换为->get()
返回预期的结果数。这是完整的代码:
$search = ((Input::get("search") != "") ? Input::get("search"):"");
$field = ((Input::get("field") != "") ? Input::get("field"):"");
if($search != "" && $field != ""){
$templates = Template::where($field, "LIKE", $search)
->orderBy($sort, $order)
->paginate(100); // Fails (0 Results)
->get(); // Works (3 Results)
} else {
$templates = Template::orderBy($sort, $order)
->paginate(100);
}
我不确定为什么->paginate()
返回0个结果。另外,dd($templates)
返回整个object(Illuminate\Pagination\Paginator)
集合,该集合具有我的结果,但不是以可访问的方式返回。如果您想查看我正在谈论的结果,请在dd()
不运行查询的情况下运行->get(), ->first() or ->paginate()
我今天早上找到了解决方案,似乎我需要解决这个问题。基本上,当我打电话给搜索方法,随着$_GET
荷兰国际集团的field=example&search=test
同时,也会发送当前页面,例如page=2
。现在,如果结果集返回<100个结果,则第2页将不存在,并且limit 100 offset 100
在查询中将不会返回任何结果(由于)。使搜索功能$_GET
成为没有页面正确链接的基本URL,page=1
并显示了我期望的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句