質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Laravel 5

    2000questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

laravel5.4 paginateの2ページ目以降が表示されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 659

現在、laravel5.4で、VIEWで検索条件を設定し、その内容をsubmitでcontrollerによみこみ、
その条件でSQLを発行・取得した情報を、再度viewへ返して表示する処理を行っています。
paginateを使用した検索結果を出力できていたのですが、paginate処理の前に簡単な分岐ロジックを入れただけで、paginateの2ページ目以降をクリックするとブラウザーが完全に真っ白表示となってしまいviewが表示されなくなりました。

ブラウザーでデバッグしたところ、htmlヘッダが2ページ目以降なくなっていました。
なぜ、分岐ロジックを入れただけでこのような動きになるのか理解できません。

以下のように所得してくるrequestのsearchに値があるかどうかを確認しているだけです。
この処理を外すと、htmlヘッダーが削除されず正常にpaginateオブジェクトが動いてくれます。

public function searchroute(Request $request)
  {
    if ($request->get('search'))
      {
        $year=$request->get('year');
        $month=$request->get('month');
        $years = $year.$month;
        $opname = $request->get('op_name');
        $account_code = $request->get('account_code');
        $item_name = $request->get('item_name');
        $customer_name = $request->get('customer_name');
        $depreciation = $request->get('depreciation');
        $achievement = $request->get('achievement');
        $concatenation = $request->get('concatenation');
        $collection = $request->get('collection');

        $search = DB::table('contents')->select()->join('contents_detail','contents_detail.ctnts_code',"=","contents.ctnts_code")
        ->where('contents_detail.target_date',$years)
        ->where('contents.op_name','like','%'.$opname.'%')
        ->where('contents.acnt_code','like','%'.$account_code.'%')
        ->where('contents.item_name','like','%'.$item_name.'%')
        ->where('contents.customer_name','like','%'.$customer_name.'%')
        ->whereIn('contents_detail.dprctn_kbn',$depreciation)
        ->whereIn('contents_detail.achieve_kbn',$achievement)
        ->whereIn('contents_detail.conct_kbn',$concatenation)
        ->Paginate(15);

        return view('contents.contentssearch')
        ->with(['search'=>$search,'year'=>$year,'month'=>$month,'depreciation'=>$depreciation,'achievement'
        =>$achievement,'concatenation'=>$concatenation]);

      }
      elseif ($request->get('downloadcsv'))
      {
       echo "test";
      }
  }

ご教授いただけますと幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fagai

    2017/09/22 18:54

    流石にその分岐のはじめの箇所だけ見せられてもわからないので、そのメソッドの全体を載せてくれませんか?

    キャンセル

  • kotakeshi0923

    2017/09/23 09:57

    全体を記載致しました。よろしくお願いいたします。

    キャンセル

  • fagai

    2017/09/23 10:16

    記載されていないようですが・・・。ソースコードは```で囲って載せていただければと思います。

    キャンセル

  • kotakeshi0923

    2017/09/23 10:34

    失礼しました。記載致しましたのでご確認の程よろしくお願いいたします。

    キャンセル

回答 1

checkベストアンサー

+2

まず真っ白になっているのは、どちらの分岐も通ってないからでしょう。

      elseif ($request->get('downloadcsv'))
      {
       echo "test";
      }
      // 以下追加
      echo "test2";


などと追記したらtest2が帰ってくると思います。

もう一つ確認すると、$request->get('search')でsearchというキーを取得していますがこれはページ遷移時もちゃんと受け継がれていますか?

現在のクエリを取得するのはRequest::query()またはrequest()->query()で取得できます。
paginateリンクに前のクエリを渡していないなら

$search->appends(Request::query())->links();

などとすると良いかもしれません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/23 11:24

    ご指摘通り、2ページ目は分岐を通っていませんでした。
    {!! $search->appends(Request::query())->links(); !!}
    に変更することで2ページ目も表示されるようになりました。
    ありがとうございました!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Laravel 5

    2000questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。