首页 > 解决方案 > 雄辩的分页两个关系合并

问题描述

我有两个模型:任务和评论

在我的用户配置文件中,我想显示按创建日期排序的任务和评论。

为此,我这样做:

$timeline_array = $customer->comments;
$timeline_array = $timeline_array->toBase()->merge($customer->tasks);

//sort timeline event
$timeline_array = $timeline_array->sortByDesc(function($timeline_event){
    return $timeline_event->created_at;
});

在我看来,我 foreach 我的数组。它工作正常,但如果我有太多评论或任务,这将是一个很大的要求,所以我想添加一个分页器。

我该怎么做 ?

如果我$timeline_array->paginate(5);最后有一个错误:

方法 Illuminate\Support\Collection::paginate 不存在。

而且我认为这并没有解决我的问题,因为我在分页之前加载了所有评论和任务。

有人有想法/解决方案吗?

标签: laravelpaginationeloquentrelationship

解决方案


终于找到了解决办法:

$timeline_array = $customer->comments;
$timeline_array = $timeline_array->toBase()->merge($customer->tasks);

//sort timeline event
$timeline_array = $timeline_array->sortByDesc(function($timeline_event){
  return $timeline_event->created_at;
});

$item_per_page = 10;
$timeline_array = new LengthAwarePaginator($timeline_array->forPage(Paginator::resolveCurrentPage(), $item_per_page), count($timeline_array), $item_per_page, Paginator::resolveCurrentPage(), [
  'path' => Paginator::resolveCurrentPath()
]);

推荐阅读