2015-06-13 52 views
0

我正在嘗試使用兩個文本輸入字段進行全文搜索。帶有多個文本輸入的全文搜索

public function searchmatch() 
{ 
    $hex = Input::get('HEX'); 
    $rgb = Input::get('RGB') 

     $products = DB::table('products')->whereRaw(
     "MATCH(HEX,RGB) AGAINST(? IN BOOLEAN MODE)", 
     array($hex,$rgb) 
    )->get(); 


    return view('search')->with('products', $products); 
} 

但它不起作用。我試圖將兩個輸入存儲到一個數組中,但它不起作用,它只在我使用一個輸入時才起作用。什麼是最好的方法呢?我正在使用Laravel 5.0。我也在整個網站尋找解決方案,但我還沒有找到一個解決方案。

我的看法形式如下:

{!! Form::model(null, array('route' => array('match.search'))) !!} 
<ul> 
<li><div id="hex">HEX:{!! Form::text('HEX') !!}</div></li> 
<li><div id="rgb">RGB:{!! Form::text('RGB') !!}</div></li> 
<li><div id="picked"></div></li> 
<li>{!! Form::submit('Find Match', array('id' => 'submitbtn')) !!}</li> 
</ul> 
{!! Form::close('Search') !!} 

這是路線:

Route::post(
'matchsearch', 
array(
'as' => 'match.search', 
'uses' => '[email protected]' 
    ) 
); 

class ProductsTable extends Migration { 

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::create('products', function(Blueprint $table) 
    { 
     $table->increments('id'); 
     $table->engine = 'MyISAM'; 
     $table->string('name'); 
     $table->string('brand'); 
     $table->string('pathtoimage'); 
     $table->string('price'); 
     $table->text('description'); 
     $table->string('HEX'); 
     $table->string('RGB'); 
     $table->string('colour'); 
     $table->string('link'); 


    }); 
      DB::statement('ALTER TABLE products ADD FULLTEXT search(name, brand,HEX,RGB,colour)'); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('products', function($table) { 
      $table->dropIndex('search'); 
     }); 
    Schema::drop('products'); 
} 

} 

ID:1
名稱:Styletto
品牌:石灰犯罪
的ImagePath:IMG/2_lime-crime-lipstick-in-styletto.jpg 價格:$ 18.00 描述:粗體,不透明&肆意裝載顏料。對於比言語更響亮的嘴脣! HEX:#1B191B RGB:27,25,27 顏色:黑色
鏈接:http://www.limecrime.com/unicorn-lipstick/

回答

0

更新:嘗試

$products = DB::table('products') 
    ->whereRaw('MATCH(HEX,RGB) AGAINST(? IN BOOLEAN MODE)', array("$hex $rgb")     
    ->get(); 

"$hex $rgb" - 沒有FTS運營商意味着$hex OR $rgb
"+$hex +rgb" - 意味着$hex AND $rgb

這是一個SQLFiddle演示

延伸閱讀:

+0

試了一下,這是行不通的。 – user3053151

+0

究竟是「不起作用」?如果您希望我進一步幫助您,請發佈表架構,幾個示例行,搜索值和所需的結果以及您正在使用的mysql版本。 – peterm

+0

這是我的數據庫模式: – user3053151