大企業営業から未経験ITエンジニアを目指すブログ

アラサー大企業営業から未経験ITエンジニアを目指すブログ。日々学んだことを忘備録的に記します。

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つにしたら何が表示されるか?

  →できている。①②③が表示される。

→解決できず。