Laravel ページネーショントラブルの解決(表示できない・ランダムページネーションの固定)
1.トラブル
ページネーションの2ページ目以降が取得できない
2.試したこと
①ページネーションのURLを確認
1ページ目(表示可能):/users/1/test
2ページ目(表示不可):/users/1/test?page=2
→問題なさそう
②作ったtextareaが問題?
→送信はしていないから関係なさそう
③作成したURLをルーティングで辿るとPOSTになっている
1ページ目で渡した内容と同じ内容をVIEWから渡す必要あり?
もしくはgetにする?
→GETにしてみた。
・ルーティング修正
・テスト条件指定ページのビューのフォームのメソッドPost→Getに修正
・コントローラでテストページのビューに渡す引数にFormのデータそのまま追加
・テストページのページネーションに下記追加
・・・ページネーションリンクにクエリ文字列追加
->appends(['scope' => $scope, 'style' => $style])
→2ページ目以降表示できた!!!
が、しかし!今度は別の問題が。
ランダムに並べた全問題出題するはずが、トータルのページネーション数は
変わらないまま同じ問題がたくさん出る。
多分コントローラに毎度配列作らせてる。=1つ目の要素が何になるかも毎回変わる
3.トラブル②
一度作ったランダム順序を固定にしてページネーションしたい(上手く言えない汗)
4.試したこと
①良い参考ページを発見!
http://kzkohashi.hatenablog.com/entry/2018/01/21/225519
→下記みたいにするとできるらしい!
$cards = $cards->inRandomOrder(132456)->paginate(1);
②コントローラ編集
$pages = null;
$count = $cards->count();
for ($i=1; $i <= $count; $i++){
$pages .= $i;
};
$cards = $cards->inRandomOrder($pages)->paginate(1);
→できた!!!一度作ったランダム順序が固定に!
→と思ったら、なんか挙動がおかしくなってきた。
5.トラブル
・テスト範囲を自分のカードにすると、ちゃんと全カードがランダムになる。
・テスト範囲を良いねしたカードにすると、良いねしたカードは3枚のうち
①②②の3ページになる
・出てこない③を見てみると、なぜか全カード表示画面で同じ③が2枚表示される
(エラー???)
・③だったカードを消して別のカードを良いねしたカード③にして
テスト範囲を良いねしたカードにしてテストすると
やっぱり①②②の3ページになる
・今度は②だったカードの良いねをやめて別のカードに良いねして3枚にする
・テスト範囲を良いねしたカードにしてテストすると
①②③の3ページにちゃんとなった。
→これはバグ??
→良いねしたカードの取得か良いね保存動作に問題あり?
6.試したこと
①$pagesのカウントが正しくできているか?
→できている。123になっている。
②Likeは正しくできているか?
→できている。Like一覧でも①②③の3つ表示される。
③Like取得のための自分のIDは正しく渡せているか?
→できている。ページネーションのどのページでも正しく渡せている。
④1ページの表示を3つにしたら何が表示されるか?
→できている。①②③が表示される。
→解決できず。