【问题标题】:Laravel search results Not Displaying ProperlyLaravel 搜索结果显示不正确
【发布时间】:2017-02-19 08:28:45
【问题描述】:

我有一个用于搜索的表单 (Laravel 5.2)。我只有一张桌子,我的数据显示。如果我按姓氏搜索,我希望它显示所有有姓氏的人。如果我按制造商搜索,我希望它显示该制造商制造的所有 PC。我基本上是想让数据库中的每一列都可以搜索。

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

我试过做一个 orderBy('search') 但没有做任何事情。我的表格只是显示,但它确实重定向到搜索路线,因为 URL 发生了变化 例如http://inventory.app:8000/computers/search?q=Dell

【问题讨论】:

    标签: php forms laravel search laravel-5.2


    【解决方案1】:

    如您的网址所示,您要查找的变量是q,而不是search。所以在你的请求中得到它:

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

    由于您要搜索的内容很可能不是列,因此请不要在您的 get() 调用中使用它。获取所有列,或者只获取您想要的列

    ->get();
    

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

    【讨论】:

    • 谢谢艾因伯。那成功了。我犯了一个愚蠢的错误!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2020-05-16
    相关资源
    最近更新 更多