Laravelで絞り込み検索をする
やりたいことは
- フォームに入力されたデータを取得して、一致するデータのみをリスト表示
ビュー
<form action="/search" method="get">
<input type="text" name="name" placeholder="社名・社員名を入力ください">
<button type="submit" value="検索">検索</button>
</form>
<table class="staffs">
<thead>
<tr>
<th>会社名</th>
<th>氏名</th>
<th>ふりがな</th>
</tr>
</thead>
<tbody>
@forelse ($testData as $staff)
<tr>
<td>{{$staff["company"]}}</td>
<td>{{$staff["name"]}}</td>
<td>{{$staff["kana"]}}</td>
</tr>
@empty
<tr>
<td>データがありません</td>
<td>データがありません</td>
<td>データがありません</td>
</tr>
@endforelse
</tbody>
</table>
コントローラー
unsetを使う
<form action="/search" method="get">
<input type="text" name="name" placeholder="社名・社員名を入力ください">
<button type="submit" value="検索">検索</button>
</form>
<table class="staffs">
<thead>
<tr>
<th>会社名</th>
<th>氏名</th>
<th>ふりがな</th>
</tr>
</thead>
<tbody>
@forelse ($testData as $staff)
<tr>
<td>{{$staff["company"]}}</td>
<td>{{$staff["name"]}}</td>
<td>{{$staff["kana"]}}</td>
</tr>
@empty
<tr>
<td>データがありません</td>
<td>データがありません</td>
<td>データがありません</td>
</tr>
@endforelse
</tbody>
</table>
unsetを使う
指定した変数の割当を解除する関数。
これを使って条件にあてはまらない配列だけ解除。
検索ボタンを押すと下記のメソッドが実行されるようにすればOK。
Route::get('/search', function(Request $request){
$testData = [];
$testData[] = [
"company" => "株式会社クエスチョン",
"name" => "鈴木たけし",
"kana" => "すずきたけし"
];
$testData[] = [
"company" => "株式会社hatenabox",
"name" => "山田太郎",
"kana" => "やまだたろう"
];
$testData[] = [
"company" => "チャット(株)",
"name" => "田中一郎",
"kana" => "たなかいちろう"
];
$this->request = $request;
$formData = $this->request->get("name");
// テストデータの各グループについてフィルタリング
if($formData){
foreach($testData as $index=>$test) {
if ($test["name"] !== $formData && $test["company"] !== $formData && $test["kana"] !== $formData) {
unset($testData[$index]);
}
}
}
return view('memberlist', [
"testData" => $testData
]);
});
結果
- フォームにデータがあれば当てはまる配列だけ残って表示される
- フォームにデータがなければフィルタリングされないので全ての配列が表示される
補足
- あんまりif文は使わずにforeachで
- できるだけまとまりで渡して行って、最後はシンプルな配列をビューに渡す
- あんまりif文は使わずにforeachで
- できるだけまとまりで渡して行って、最後はシンプルな配列をビューに渡す
といい感じになるらしい。
Author And Source
この問題について(Laravelで絞り込み検索をする), 我々は、より多くの情報をここで見つけました https://qiita.com/shosho/items/727ca13ea706b773774e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .