Laravel分页不适用于:: where(...)

蒂姆·刘易斯

我对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章