【问题标题】:Laravel: Paginate on a merged collection?Laravel:对合并的集合进行分页?
【发布时间】:2018-05-10 06:54:17
【问题描述】:

我已经合并了一个集合,现在我希望能够对其进行分页。我已经阅读了this stackoverflow answer on forPage,但我不太明白如何应用它。有人可以帮忙澄清一下吗?谢谢!

在我的控制器中:

$lofilter = request('locationfilter');

$mypostings = Postings::where('location', 'LIKE', '%'. $lofilter .'%')->get();
$otherpostings = Postings::where('location', 'NOT LIKE', '%'. $lofilter .'%')->get();

$postings = $mypostings->merge($otherpostings)->paginate(20);

【问题讨论】:

  • 那些并不是真正的查询,对吧?
  • 什么意思
  • 因为你为什么要运行这两个查询
  • 我有一个公寓列表数据集,我想让用户按选定的位置对其进行排序/“过滤”。因此,例如,如果我按 NY 过滤,我想首先显示所有 NY 列表,但在其下方仍然希望能够显示其他所有列表。有没有更好的方法来做到这一点?
  • 我认为您应该在 ORDER BY 子句中使用 CASE 语法。

标签: laravel pagination


【解决方案1】:

答案就在您分享的链接中。在您的代码中,$postings 是一个集合,而集合没有 paginate() 方法。而是使用链接中所述的forPage() 方法

$postings = $mypostings->merge($otherpostings);
$links = $postings->forPage(1, 20);

第一个参数是页码,第二个参数是您希望每页显示的项目数。不过,文档非常不言自明!

UDPATE:

您需要手动分页,您可以在视图中执行此操作(伪代码)

{{ $totalPages = count($postings) }}

@foreach ($links as $link)
/* Display the links */
@endforeach

/* Create Pagination Links */
@for ($i = 1; $i <= $totalPages; $i++)
Create the links
@endfor

【讨论】:

  • 当我使用 forPage 时,是否有可以在视图中使用的 links() 等效项?
  • $links 只是一个变量,使用与您的应用程序相关的任何名称
  • 对不起,我的意思是:我正在尝试在我的视图中执行相当于 {{ $postings->links() }} 的操作来显示页码和页面链接,但因为我没有使用分页功能它说“链接方法不存在”。如何在视图中显示它?
  • 请检查答案中的更新,虽然未经测试
猜你喜欢
  • 2015-08-05
  • 2017-05-03
  • 2021-04-18
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
相关资源
最近更新 更多