2016-10-10 146 views
0

我有一個表單(Laravel 5.2)進行搜索。我只有一張桌子和我的數據顯示。如果我使用姓氏搜索,我希望它顯示每個擁有姓氏的人。如果我通過製造商搜索,我希望它顯示該製造商生產的所有PC。我基本上試圖使數據庫中的每列可搜索。Laravel搜索結果未正確顯示

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Inventory</title> 
    <link rel="stylesheet" href="/css/libs.css"> 
    <link rel="stylesheet" href="/css/app.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    </head> 
    <body> 

    <nav class="navbar navbar-inverse navbar-fixed-top"> 
<div class="container-fluid"> 
    <div class="navbar-header"> 
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
    </button> 
    <a class="navbar-brand" href="http://inventory.app:8000/computers/create" Inventory</a> 
    </div> 
    <div id="navbar" class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav navbar-right"> 
     <li> 
      {{ Form::open(['method' => 'GET', 'url'=>'computers/search']) }} 
      {{ Form::input('search', 'q', null, ['placeholder' => 'Search...']) }} 
      {{ Form::close() }} 
     </li> 
     <li><a href="http://inventory.app:8000/computers/create">Update Inventory</a></li> 
     <li><a href="#">Logout</a></li> 
    </ul> 

    </div> 
</div> 
</nav> 

我爲路由使用了路由資源。我的搜索路線是

Route :: get('computers/search','InventoriesController @ search');

我的搜索器是如下

public function search() 

     { 
      $search = \Request::get('search'); //<-- we use global request to get the param of URI 

//   $search = Input::get('search'); 

      $inventories = Inventory::where('lastName','LIKE','%'.$search.'%') 
       -> orwhere('firstName', 'LIKE','%'.$search.'%') 
       -> orwhere('department', 'LIKE','%'.$search.'%') 
       -> orwhere('building', 'LIKE','%'.$search.'%') 
       -> orwhere('room', 'LIKE','%'.$search.'%') 
       -> orwhere('manufacturer', 'LIKE','%'.$search.'%') 
       -> orwhere('device', 'LIKE','%'.$search.'%') 
       -> orwhere('model', 'LIKE','%'.$search.'%') 
       -> orwhere('tag', 'LIKE','%'.$search.'%') 
       -> orwhere('macAddress', 'LIKE','%'.$search.'%') 
       -> orwhere('status', 'LIKE','%'.$search.'%') 
       -> orwhere('comments', 'LIKE','%'.$search.'%') 
       ->get($search); 




      return view('computers.search',compact('inventories')); 
     } 

我試圖做一個排序依據(「搜索」),但沒有做任何事情。我的表只顯示但因爲URL改變 例如http://inventory.app:8000/computers/search?q=Dell

回答

0

在你的URL顯示它並重定向到搜索路徑,你要尋找的變量是q,不search。因此,獲得在你的請求,而不是:

$search = \Request::get('q'); 

既然你正在尋找最有可能不是列,不要在您get()呼叫時使用。剛剛得到的所有列,或你想要的那些

->get(); 

->get(['lastName','firstName','department',...]); 
+0

謝謝Aynber。那就是訣竅。我的部分愚蠢的錯誤! – Afonte