Laravel 5.3中的搜索栏过滤表格

时间:2016-12-07 10:25:28

标签: php html laravel search blade

首先)添加搜索栏以查看:

{!! 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>

第二)我的控制器我在桌子上显示所有用户,搜索栏位于其上面

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-&gt; name}}                      @endforeach 并将视图仅替换为搜索的名称。 这是索引的路线

    Route::get('/home', 'HomeController@index');

我怎么能做到这一点?对不起提前提出长问题。

1 个答案:

答案 0 :(得分:7)

您需要使用func checkDateInput(inputStr: String) -> Bool { let ch2 = inputStr[inputStr.index(inputStr.startIndex, offsetBy: 2)] let ch5 = inputStr[inputStr.index(inputStr.startIndex, offsetBy: 5)] if ch2 != "-" || ch5 != "-" { return false } let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MM-dd-yyyy" if let date = dateFormatter.date(from: inputStr) { return true } return false } 代替like

=

此外,您正在尝试创建两个查询。更好的方法是创建local scope

$users = User::where('name', 'like', '%'.$search.'%')
    ->orderBy('name')
    ->paginate(20);

然后在控制器中使用它:

public function scopeSearch($q)
{
    return empty(request()->search) ? $q : $q->where('name', 'like', '%'.request()->search.'%');
}

如果没有搜索参数,此代码将对所有用户进行分页,或者它将过滤用户并对其进行分页。