2016-10-10 128 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