2016-12-07 125 views
2

一)增加的搜索栏查看:搜索栏来过滤表

{!! 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循环($用户为$用户) {{$用户>名称}} @endforeach 并仅将视图替换为搜索到的名称。 这里是该指数

Route::get('/home', '[email protected]'); 

我怎么能achive的路线?提前对很长的问题抱歉。

回答

4

您需要使用like而不是=

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

而且,你要创建两个查询。更好的方法是创建local scope

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')); 
} 

此代码将分页所有用户如果没有搜索参数,否则将过滤用户和分页他们。

+0

你好,那我的html怎么样?我需要为“用户”添加更多内容吗?因为我修复了一切,但搜索栏并没有过滤用户@Alexey Mezenin – leo0019

+1

它应该是'@foreach($ users as $ user)'和'$ user-> name','$ user-> city'等。 –

+0

nvm通过你的代码解决了这个问题:: – leo0019