1)ビューに検索バーを追加しました:
{!! Form::open(['method'=>'GET','url'=>'home','class'=>'navbar-form navbar-left','role'=>'search']) !!}
<div class="input-group custom-search-form">
<input type="text" class="form-control" name="search" placeholder="Search...">
<span class="input-group-btn">
<button class="btn btn-default-sm" type="submit">
<i class="fa fa-search">i
</button>
</span>
2)コントローラーで、すべてのユーザーをテーブルに表示していて、その上に検索バーがあります
public function index()
{
$user = User::all();
$search = \Request::get('search'); the param of URI
$users = User::where('name','=','%'.$search.'%')
->orderBy('name')
->paginate(20);
return view('home',compact('users'))->withuser($user);
}
テーブルは次のようになります
@foreach($user as $users)
<th scope="row">1</th>
<td><a href="{{ url('/user').'/'.$users->id }}">show</a></td>
<td>{{$users->name}}</td>
<td>{{$users->city}}</td>
<td>{{$users->phone}}</td>
<td>{{$users->street}}</td>
<td>{{$users->national_id}}</td>
<td>{{$users->name}}</td>
</tr>
@endforeach
私が取得しようとしているのは、バーで検索するときに、この@foreach($ users as $ user){{$ user-> name}} @endforeachのようなループを実行して、検索された名前にビューを置き換えることです。のみ。これがインデックスのルートです
Route::get('/home', 'HomeController@index');
どうすればそれを達成できますか?事前に長い質問をしてすみません。
=
の代わりにlike
を使用する必要があります。
$users = User::where('name', 'like', '%'.$search.'%')
->orderBy('name')
->paginate(20);
また、2つのクエリを作成しようとしています。はるかに良い方法は、作成することです ローカルスコープ :
public function scopeSearch($q)
{
return empty(request()->search) ? $q : $q->where('name', 'like', '%'.request()->search.'%');
}
そして、それをコントローラーで使用します。
public function index()
{
$users = User::search()->orderBy('name')->paginate(20);
return view('home', compact('users'));
}
このコードは、検索パラメーターがない場合はすべてのユーザーをページ分割するか、ユーザーをフィルター処理してページ分割します。