2016-05-06 10 views
0

私は「フォーラムのような」アプリを開発しています。スレッドを表示すると、スレッド内の投稿を表示することもできます1)。Laravel - (ページネーション)の「投稿」を持つページを確認する

URLは/thread/29?post=22のようになります。さて、スレッドは多くの投稿を持つことができます。したがって、1ページに10個の投稿が付いているため、投稿はいつ投稿されたかに応じて任意のページに表示されます。

私はレコード内の投稿がどのページにあるかを知る方法がありません。

ページネーションレコードは動的です。

マイコード:

$posts = Post::where('thread_id', $thread->id)->paginate(10); 
//there are over 50+ posts for instance 

私の簡素化ビュー:どのように私は、特定のポストを持っているページを知っているだろうhttp://example.com/thread/1

@foreach ($posts as $post) 

    <span id="post{{ $post->id }}">Post #{{ $post->id }}</span> 

    {{ $post->body }} 

@endforeach 

私の例のURLは次のようになりますか? ID 1のスレッドに属するID 28のポストに行きたいとします。スレッドの結果のどのページがどのように分かっていますか?

http://example.com/thread/1?post=28&page=2 //authomatically guessed that post 28 would be in page 2. 

はどのようにこれを行うことができます。

は、私のような何かをしたいですか? ありがとう!

+0

あなたがより多くをしてください説明できますか?あなたは投稿を含むスレッドを持っていますか?私は問題を理解できませんでした!注文を注文してもらいたいですか? 1ページ目は1から10、2ページ目は11から20ページのような私のメーン? –

+0

はい私はそれらを注文したい。スレッドのように、多くのページに多くの投稿があり、どのページに投稿があるかを知りたいです。 –

答えて

0

投稿IDを10とceil値で除算します。あなたのポストのidのは、動的掲載日順スレッドからのすべての記事を検索し、結果を反復処理している場合は、スレッド内の各ポストが1

$page = ceil($post->id/10); 

編集

によって1と刻みで始まる場合、それはもちろんです検索されたIDの位置を見つける。私は、クエリ構文についてとてもわからないlaravelの開発者ではないですが、このような何か:

$searching_id = 28; // searching for page of post id 28 
$post_index = 0; // position of post in ordered posts array 
$posts = Post::where('thread_id', $thread->id)->order_by('post_date'); // get all posts ordered by post_date or whatever table field is for post date 
foreach ($posts as $post) { 
    if ($post->id == $searching_id) { 
     break; 
    } 
    $post_index++; 
} 
$page = (int)($post_index/10) + 1; 
+0

申し訳ありませんが、ページ番号が付けられたレコードは動的であることを言及する必要があります。 –

+0

@TaylorSwift私は自分の答えを更新しました。 – TheDrot

+0

ありがとう、私はそれに似た方法をしましたが、あなたのソリューションのような90%でした。 –

0

相続人は、私はそれをやった方法:

$post_id = 28; 
$posts_per_page = 10; 
$posts = Post::where('id', $thread->id)->get(); 

foreach ($posts as $key => $value) { 
    if ($value->id == $post_id) { 
     $page = ceil(($key + 1)/$posts_per_page); 
     break; 
    } 
} 

// $page = 2 
関連する問題