2017-03-25 5 views
0

私はlaravel 5.3でプロジェクトを進めています。あらゆることがうまくいきますが、私は視野に入れてページネーションの問題に直面しています。私はコードにいくつか欠けていて、私が逃したものを検出できないと思います。私のページングリンクはlaravelで動作していません5.3ページ番号をクリックするとURLは変わりますが内容は変わりません

私はpostsテーブルとcategoriesテーブルを持っていて、投稿とカテゴリの関係を保存しているテーブルはその名前がpost_n_categoryです。次の画像はpost_n_categoryテーブルの構造を示しています。

enter image description here

Iモデルwhithinデータベースからデータをフェッチする方法を符号化しています。

public static function pids($id) 
{ 
    $posts = self::select('pid')->where('sid', $id)->orderby('id', 'desc')->paginate(5); 

    if($posts != null) 
    { 
     return $posts; 
    } 
    else 
    { 
     return ""; 
    } 

} 

以下はビューを返すコントローラメソッドです。

public function category() 
{ 
    return view('category'); 
} 

であり、最後に以下がビューコードである。

@foreach(\App\PnC::pids(9) as $pid) 

    {{ $pid->pid }}<br /> 

@endforeach 
<hr /> 
{{ \App\PnC::pids(9)->links() }} 

このコードは正しく動作していますが、pidは正しく表示され、ページのボタンは表示されるはずです。しかし問題のIDは、ページ2をクリックすると正しく変更されますが、コンテンツは最初のページと同じで、ページングリンクのアクティブなリンクはコンテンツに従って1のままです。つまり、問題はアドレスバーのチェーンのページ番号URLを正しくクリックすることですが、コンテンツとページングリンクのアクティブなリンクは最初のページと同じままです..どんな助けてください..

答えて

0

別のアプローチを提案できますか?あなたのビューであなたのコントローラの使用では

public function category() 
{ 
     $posts = Posts::select('pid')->where('sid', $id)->orderby('id', 'desc')->paginate(5); 

    return view('category', compact ('posts')); 
} 

@foreach($posts as $post) 

    {{ $post->pid }}<br /> 

@endforeach 

{{ $posts->links() }} 

ページネーションを使用している間laravelはデフォルトでページネーションを提供するので、それは、コントローラ自体に関数を呼び出す方が良いでしょう。 参照を見つけることができますhere

+0

私は '{{\ App \ PnC :: pids(9) - >リンク}}}'と '{{$ pid-> links()}}'が動作していません。エラーが発生します。 –

+0

編集された回答が役に立つかどうか確認してください。 – Saurav

関連する問題