2017-07-20 13 views
0

URLを作品:www.example.com/1(1テーブルからのid = 1である。)Laravelのスキップ()関数は、最初のクエリだけに

私は、ユーザーが次に行くことを可能にするボタンがあります可能であれば前の記録を保存する。 (www.example.com/2):

$next = Video::where('id', '>', $id)->min('id'); 

さて、私は、ユーザーが、私が試した10件のレコードをジャンプしたい:

Video::where('id', '>=', $id)->skip(10)->first(); 

私は右のレコードを取得んが(それが1からジャンプ言うことができます〜11)。しかし、私が次のレコード(www.example.com/2)に行くと、skip()関数(11)と全く同じ結果が得られます。

skip()クエリに入る$ idが変更されていることを確認しました。この機能が更新されないのはなぜですか?

p.s .: マイコントローラ:

public function show ($id){ 
$next = Video::where('id', '>', $id)->min('id'); 
$previous = Video::where('id', '<', $id)->max('id'); 
$skip = Video::where('id', '>=', $id)->skip(10)->first(); 

return view('page',[ 
'next' => $next, 
'prev' => $prev, 
'skip' => $skip, 
} 
+0

$ skip = Video :: where( 'id'、 '> ='、$ id) - > get($ id + 10); 'をスキップしましたか?私はそれが動作し、get()がパラメータを受け入れるかどうかはわかりませんが、試してみてください。 – Chris

+0

次のボタンのコードを表示できますか? – Maraboc

+0

@Chrisこのメソッドの問題は、私のIDがすべて順番に並んでいないことです。したがって、必要なレコード数をスキップし、そのようなIDがない可能性があります。私はskip()がその問題を克服すると思います。 – stepbystep

答えて

0

first方法は、常に最初のレコードを返し、where句を尊重しskip方法を無視します。そのため

提案ソリューション:

$collection = YourModel::where(SOMETHING HERE)->skip(10)->take(1)->get(); 

今、私たちはコレクションを持っています。

$item = $collection[0]; // array-like syntax 
$item = $collection->first(); // standard collection method 
関連する問題