背景
キーワード検索でcontroller側でDBにアクセスしてデータを取得する処理はよく行われるが
今回は既に出来上がった多次元配列の変数にキーワード検索を行い、View側に返す処理を実行します。
処理概要
View側で部署検索フォームに文字を入れた際に部分検索で該当するデータを返すようにします。
処理内容
preg_matchとCollectionクラスのfilterメソッドを使用します。
【多次元配列のデータ】
$departments = [
['name' => '佐藤', 'department' => '営業部'],
['name' => '鈴木', 'department' => '総務部'],
['name' => '田中', 'department' => '人事部'],
];
処理。検索キーワードは$request->department
に入ってる事とします。
$collection = collect($departments);
$target = '/' . $request->department . '/';
$filtered = $collection->filter(function($value) use ($target){
return preg_match($target, $value['department']);
});
return view("***", compact('filtered'));
filterなどの無名関数を引数に取るメソッドは、外部から変数を渡す際にuseが必要になります。
例えばView側から営業
という文字列が送信されてきた場合
['name' => '佐藤', 'department' => '営業部'],
のデータを返す処理となります。