2017-09-29 5 views
1

私のサイトでは、ユーザーが画像をアップロードできます。画像には独自のページがあります。Laravel条件とループアラウンドを使用した次の/前のクエリ

$user = User::where('username', $username)->first(); 
$image = Images::where('url_title', $URLtitle)->where('created_by', $user->id)->first(); 

これらのページでは、ユーザーの次/前の画像に移動する前/次のボタンが必要です。しかし、私はこれらも同様にループしたい。

たとえば、ユーザーが3つの画像をアップロードしたとします。 IDが33、55、および61

の画像あなたがイメージ55にあった場合は、前の画像が33になると、あなたは画像61上にあった場合は、次の画像は、しかし、61

なり、次の画像は33にループします。

これらのリンクを作成するにはどうすればよいでしょうか?

+0

なぜあなたはjavascriptでこれをしていませんか? –

+0

あなたのコードは現在使用していますが、ID = 33の画像しか得られませんか? –

+0

@JamesRiadyいいえ、ほんの一例です。 –

答えて

1

あなたが行うことができ、いくつかの余分なクエリ実行している気にしない場合:

$query = Images::where('url_title', $URLtitle)->where('created_by', $user->id); 
$image = $query->first(); 
$prevImage = $query->where('id', '<', $image->id)->orderBy('id', 'desc')->first(); 
$nextImage = $query->where('id', '>', $image->id)->orderBy('id', 'asc')->first(); 

あなたの選択した画像のそれぞれの側に最も近い画像を与える必要があります。

+0

$ imageは正しいイメージを返しますが、$ prevImageと$ nextImageはnullを返します。 –

+0

あなたの答えは次のように言い換えるとうまくいきます: $ prevImage = Images :: where( 'created_by'、$ userID) - >ここで( 'id'、 '<', $image-> id) - > orderBy(' id '、 'desc') - > first(); –

関連する問題