Tim*_*wis 5 php pagination laravel laravel-4
我对 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);
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么->paginate()返回 0 结果。另外,dd($templates)返回整个object(Illuminate\Pagination\Paginator)集合,其中包含我的结果,但不是以可访问的方式。如果您想查看我正在讨论的结果,请运行dd()一个查询,而不需要->get(), ->first() or ->paginate()
今天早上我找到了解决方案,看来我需要睡觉了。基本上,当我调用搜索方法时,除了$_GETing 之外field=example&search=test,它还会发送当前页面,例如page=2。limit 100 offset 100现在,如果结果集返回 < 100 个结果,则第 2 页将不存在,并且查询中不会返回任何结果(因为)。将搜索功能设置为$_GET基本 URL,而无需正确链接页面page=1并显示我期望的结果。
| 归档时间: |
|
| 查看次数: |
9803 次 |
| 最近记录: |