2016-12-07 97 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