我有一个Status
模型,其中每个实例都可以有许多子状态/注释。我可以通过这种关系函数收集这些评论:
public function comments() {
return $this->hasMany('App\Models\Status', 'parent_id');
}
现在,在网页初始加载时,每个状态最多显示4条评论(最近4条评论)。我现在想做的是:
选择"查看更多评论"按钮,向端点发出AJAX请求以获取前20条最新评论并将其呈现给页面。我已经能够很好地设置我的AJAX甚至是渲染,但是我抓住了所有的评论,甚至是已经渲染的初始评论,而不是仅仅是下一组20的一大块。
我应该使用Eloquents Chunk Method,Take Method还是Splice Method?或另一组方法的组合?
答案 0 :(得分:0)
使用分页。
$status = Status::find(1);
$comments = $status->comments()
->latest() // Equivalent to: orderBy('created_at', 'desc')
->skip(4)
->paginate(20);
在发出您的AJAX请求时,请将page
值与请求一起传递为POST
或GET
参数。
答案 1 :(得分:0)
无论什么似乎对你最好,无论什么解决你的问题。但一定不要离开laravel的领域。但在我看来,Pagination的概念可以派上用场。它非常简单,并且有很多方法。