2015-04-21 127 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多個結果將在運行,並且不會換行,即將在該部分的工作,但我想如果有人需要幫助搞清楚查詢部分。