2017-08-09 8 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'を送ることができます。また、ページ番号を使用してその項目よりも大きい項目をクエリすることもできます。 –

答えて

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> 

は、あなたのアイデアを得る願っています。私はプロジェクトで同じアイデアを使用しましたが、パラメータとしてタイムスタンプを使用しましたが、完璧に動作します。

関連する問題