繁体   English   中英

向分页结果中添加数据

[英]Adding data to Paginated Results

使用->find($id)将查询存储在变量中之后添加数据非常简单。 我可以用..

 $photo = Photo::with('likes')->find($id);
 $photo->total_likes = $photo->likes->count();

 return response()->json($photos, 200);

就像魅力一样工作。所以我不需要使用for循环


但是,如果我想向分页结果中添加数据怎么办?

$photos = Photo::with('likes')->where('user_id', $user_id)->paginate(15);

return response()->json($photos, 200);

这样,我收到的数据将作为回报:

"total": 5,
"per_page": 15,
"current_page": 1,
"last_page": 1,
"next_page_url": null,
"prev_page_url": null,
"from": 1,
"to": 5,
"data": [
    "likes": [each like object..]
       ]

如何使用$photo->total_likes = $photo->likes->count(); 分页结果后返回总计数的方法?

您可以通过创建自定义分页程序实例来实现。 例如:

public function getNews() {
    $news = \App\News::select()->orderBy('created_at', 'desc')->get();

    $collection = $this->prepareNews($news);

    return $this->paginator($collection);
}

protected function prepareNews($news) {
    // do stuff with your news/whatever here
    foreach($news as $item) {
         'title' => $item->title,
         'category' => $item->category_id != 0 ? $categories[$item->category_id]['name'] : null,
    }
    // Note the collect, this is important 
    return collect($arr);
}

protected function paginator(\Illuminate\Support\Collection $items, $perPage = 3) {
    //Get current page form url e.g. &page=6
    $currentPage = Paginator::resolveCurrentPage() - 1;
    $currentPageSearchResults = $items->slice($currentPage * $perPage, $perPage)->all();


    return new Paginator($currentPageSearchResults, count($items), $perPage);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM