2017-08-09 109 views
1

我想在我的Laravel应用程序中构建无限滚动功能。当用户访问我的页面时,我会使用PHP加载前10个项目。Laravel无限滚动

MyModal::skip(0)->take(10)->get() 

我肯定能得到下一个项目使用

MyModal::skip(10)->take(10)->get() 

但问题是,当有新的entrys增加而我滚动至底部。我怎么能告诉Laravel“给我从ID X的项目开始的下10个项目”

我希望你能理解我的问题。

+1

你试过分页了吗? –

+0

当请求下一个项目时,您还可以从列表中发送“first id”(因此即使在流程中添加了新项目),并使用分页查询大于该id的项目...这就是我将如何处理 –

回答

0

你可以使用这样的方法。您可能有一条路径作为锚点链接插入到视图的末尾,并使用AJAX调用接下来的10个结果。

所以,路线应该是这样的:

Route::get('/mymodal/{skip?}', '[email protected]'); 

这就需要控制器与可能跳过一些项目。然后下一个跳过值将被发送到视图和结果。

public function nextItems(Request $request, $skip = 0) { 
    $results = MyModal::skip($skip)->take(10)->get(); 
    return view('mymodals.theview', [ 
      'results' => $results, 
      'skip' => $skip + 10 
    ]); 
} 

,然后在视图中,你跳过值添加到锚:

@foreach ($results as $r) 
    (...) 
@endforeach 

<a href="{{action('[email protected]', $skip)}}">Next page...</a> 

希望你的想法。我在一个项目中使用了同样的想法,但将时间戳作为参数,并且工作完美无瑕。