PHP初心者です
表題の通りなのですが、
1つのBladeでクリック時(サイト導入時)はDB一覧を表示させず、
検索ボックスより検索した時に始めてデータが出てくるようにしたいです。
ただ一覧を出すだけならできたのですが、最初は何も表示させず、検索した後に
SQLよりデータ抽出するなんてどうやって表示のタイミングかえるんだよ~~って感じで詰まってます。
(都合によりページを増やす事はできないのです。。。。)
そこでお力を借りれればと思います。
書き方が悪いなどめちゃくちゃあるかと思うのですが、ヒントだけでも戴きたいです。お願いいたします。
特にControllerのindex()内の$kmaster に下メソッドgetQueryの処理結果を入れればいけそうな気もするんですが、
returnする方法もあいまいです。。教えてください、
##Controller
<?php class BmasterListController extends Controller { public function index() { $query = new stdClass(); $b_code= 'b_code';//部署コード $tenpo_code= 'tenpo_code';//店舗コード $jname = 'sname'; //部署名 $name = 'name'; //店舗名 $kmaster ->getQuery($b_code, $tenpo_code, $name); //view に kmasterListを返す return view('kmasterList', ['kmaster' => $kmaster])->with('resultcount', $resultcount); } //検索 private function getQuery($b_code,$tenpo_code,$name) { // クエリ生成(部署コードと部署名を取得するためのクエリ) $query = DB::table('t_class') ->select('t_class.b_code', 'b_school.name as sname', 't_class.tenpo_code', 't_class.name') ->join('b_school', 't_class.b_code', '=', 'b_school.b_code'); //検索条件に部署コードが存在する場合 if (!empty($query->b_code)) { $query->where('b_code', 'like', '%' . $query->b_code. '%'); } // 検索条件に店舗コードが存在する場合 if (!empty($query->tenpo_code)) { $query->where('tenpo_code', 'like', '%' . $query->tenpo_code. '%'); } // 検索s条件に店舗名が存在する場合 if (!empty($query->name)) { $query->where('name', 'like', '%' . $query->name . '%'); } $kmaster = $query->get(); // 表示件数を取得 $resultcount = $kmaster->count(); //queryに bmasterListを返す //return $query('bmasterList', ['kmaster' => $kmaster])->with('resultcount', $resultcount); return $query;
##Blade
@section('content') <div id="site_content" class="kmaster"> <div id="content"> <h1>店舗マスタ・一覧</h1> <div class="stouroku">新規登録は<a href="{{ route('bmasterRegist.index') }}"> こちら</a></div> <div id="ju_search" class="search"> <form action="{{route('bmasterList.index')}}" method="post"> <!-- CSRF保護 --> @csrf <tbody> <tr> <td> <p>部署 {{session(config('constants.SESSION_KEY_SCHCODE'))}} {{session(config('constants.SESSION_KEY_SCHNAME'))}}</p> </td> </tr> <tr> <td> <p>店舗コード <input type="text" name="kcode" class="cell clear"> 店舗名 <input type="text" name="kname" class="cell clear"></p> </td> </tr> </tbody> </table> <div class="buttons"> <p><input class="button bulu" type="submit" name="submit" value="検索"></p> <p><input id="inputClear" class="button green" type="reset" name="reset" value="クリア"></p> </div> </form> </div> <div id="ju_List" class="List2"> <p>({{ $resultcount }}件表示)</p> <table> <tr> <th> 部署コード </th> <th> 部署名 </th> <th> 店舗コード </th> <th> 店舗名 </th> <th> </th> <th> </th> </tr> @foreach ($kmaster as $val) <td>{{ $val->tenpo_code}} </td> <td>{{ $val->sname}} </td> <td>{{ $val->b_code}} </td> <td>{{ $val->name}} </td> <td> <a href="{{ route('bmasterList.delete', $val->tenpo_code) }}" onclick='return confirm("削除してもよろしいですか?");'>削除</a> </td> @endforeach </table> </div> </div> </div>
特にreturn文で$queryを返しているのですが、ちゃんと帰っているか。。。
##追記 Route
// 店舗マスタ・一覧 // 初期表示 Route::get('/bmasterList', 'BmasterListController@index')->name('bmasterList.index'); // 検索 Route::post('/bmasterList', 'BmasterListController@index')->name('bmasterList.index'); // 削除 Route::get('/bmasterList/{tenpo_code}', 'BmasterListController@delete')->name('bmasterList.delete');
##version
php7.3
laravel 5.7
MySQL 5.7
回答1件
あなたの回答
tips
プレビュー