2015-04-21 83 views
0

我想让用户在搜索栏中放入任意数量的数字,并让这些数字与我的数据库中包含这些数字的字符串匹配并拉出整个字符串。我现在正在艰难地工作。我试图让它只用4个数字,我认为这会更容易成为一个壮举,同时也给了我一个关于如何解决其余问题的好概念。截至目前,我没有收到任何错误,但是当我输入4个数字时,它不显示任何信息,我知道它应该匹配现有的字符串。我使用的数据库是mysql。这是我在我的控制器:查询搜索laravel 5

public function executeSearch() 
{ 


    $search = Input::get('search'); 
    session_start(); 
    $_SESSION['search'] = $search; 
    $nsn_list_all = nsn::all(); 
    $query = \App\nsn::where('nsn_number', $search)->get(); 



    return View('Search_views.searchresults',compact('search', 'nsn_list_all', 'query')); 
} 

这是我的看法:

@extends('layout.master') 
@section('content') 
<div class="main"> 
<br/> 
    <h2>Search Results for {{$search}}:</h2> 
    <br/> 
    <table id="contact_table"> 
     <thead> 
     <tr> 
      <th>National Stock Number</th> 
      <th>Part Number</th> 
      <th>Description</th> 
     </tr> 
     </thead> 
     <tbody> 
      <tr> 
       @foreach($query as $search_result) 
        @if($search_result->nsn_number == $search && 
         $search_result->nsn_number[1] == $search[1] && 
         $search_result->nsn_number[2] == $search[2] && 
         $search_result->nsn_number[3] == $search[3]) 

         <td>{{$search_result->nsn_number}}</td> 
         <td>{{$search_result->pn_name}}</td> 
         <td></td> 
        @endif 
       @endforeach 
      </tr> 
     </tbody> 
    </table> 
</div> 
@endsection 

在一个侧面说明,而不if语句的foreach声明工程尽管找到精确匹配。

+0

为什么使用'session_start' /'$ _SESSION'而不是Laravel的内置Session类? – ceejayoz

+0

已经知道如何去做,而这只是用尽了所有选项,并没有影响我的代码。 – Vantheman6

回答

0

我想通了。这将在字符串中找到所有匹配的数字。

在控制器:

if ($search) 
    { 
     $nsn_query = DB::table('nsns')->where('nsn_number', 'LIKE', "%$search%")->get(); 
    } 

的观点:

@foreach($nsn_query as $search_result) 
     <td>{{$search_result->nsn_number}}</td> 
     <td>{{$search_result->pn_name}}</td> 
     <td></td> 
@endforeach 

FYI多个结果将在运行,并且不会换行,即将在该部分的工作,但我想如果有人需要帮助搞清楚查询部分。