具有限制记录的laravel中的分页



我是新的Laravel我如何添加分页getRelatedNews函数我需要显示简单的"Next"one_answers";Previous"链接在分页视图中,我尝试使用simplePaginate方法,我不知道在哪里放函数?

public function news($id, $alias)
{
$crypto_news = CryptoNews::where('id', $id)->first();
if(isset($crypto_news->title)) {
$data = [
'crypto_news' => $crypto_news,
'crypto_related_news' => $this->getRelatedNews($id,100),
'crypto_most_read_news' => $this->getMostReadNews($id, 7, 6),
'crypto_news_from_bitcoin' => $this->getNewsFromBitcoin($id, 9)
];
return view(getCurrentTemplate() . '.pages.single_news', $data);
}
return redirect('/crypto-coins-news-headlines');
}
public function getRelatedNews($id, $limit)
{
$crypto_news = CryptoNews::take($limit)
->where('status', '=', 1)
->where('urlToImage', '!=', 'no_preview.png')
->where('urlToImage', '!=', '')
->where('lang', 'en')->where('id', '!=', $id)
->orderBy('publishedAt', 'desc')->get()->toArray(); 
$lang_news = [];            
if(LaravelLocalization::getCurrentLocale() != 'en') {
$news_object = CryptoNews::take($limit)
->where('status', '=', 1)
->where('urlToImage', '!=', 'no_preview.png')
->where('urlToImage', '!=', '')->where('id', '!=', $id)
->where('lang', LaravelLocalization::getCurrentLocale())
->orderBy('publishedAt', 'desc');
if($news_object->count() > 0) {
$lang_news = $news_object->get()->toArray();
}
if($news_object->count() > $limit) {
$crypto_news = $lang_news;
} else {
$crypto_news = array_merge($lang_news, array_slice($crypto_news, 0, $limit-$news_object->count()));
}
}
return $crypto_news;
}

如果要实现分页,则不需要take()方法。引用自官方文档:

take方法返回一个具有指定项数的新集合。

要使用simplePaginate,您可以在查询中这样使用:

$crypto_news = CryptoNews::where('status', '=', 1)
->where('urlToImage', '!=', 'no_preview.png')
->where('urlToImage', '!=', '')
->where('lang', 'en')->where('id', '!=', $id)
->orderBy('publishedAt', 'desc')->simplePaginate($limit);

最新更新