2016-10-29 4 views
1

は、ここに私の現在の移行です:titledescription列の全文索引を作成するにはどうすればよいですか?

class News extends Migration 
{ 
    public function up() 
    { 
     Schema::create('News', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('title'); 
      $table->text('description'); 
      $table->integer('user_id')->unsigned()->index(); 
      $table->string('imgPath')->nullable(); 
      $table->timestamps(); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('News'); 
    } 
} 

は今、私は別に、これらの列にフルテキストインデックスを作成する必要があります。だから私はこのようなものを探している:->fulltext()。しかし、私はLaravelのドキュメントには何も似ていません。

とにかく、

  1. は、どのように私は、移行中に、単一の列にフルテキストインデックスを作成することができますか? Like:(title)
  2. また、私の情報として、移行で複数の列に複合フルテキストインデックスを作成するにはどうすればよいですか?同様に:(title, description)

注:は、私は私はこのように検索できるインテックスをしたい:それはMySQLの特異的であるため. . . match(col) against('value')

+0

https://laracasts.com/discuss/channels/general-discussion/fulltext-indexes-at-migrations – CBroe

+1

人々はいけません良い質問を投票、それはメンバーを失望させる。 – bstory

答えて

7

Laravelは、全文検索をサポートしていません。 しかし、あなたはとして生のクエリを使用することができます。

DB::statement('ALTER TABLE News ADD FULLTEXT search(title, description)'); 

注 - 5.6+ MySQLを使用していない場合、我々はMyISAMの代わりにInnoDBのにデータベースエンジンを設定しなければならないこと。

$table->engine = 'MyISAM'; // means you can't use foreign key constraints 

検索するための、あなたが行うことができますように。

$q = Input::get('query'); 

->whereRaw("MATCH(title,description) AGAINST(? IN BOOLEAN MODE)", array($q)) 
+0

ありがとう.. upvote – stack

+1

これはMySQL固有のものではありません。https://docs.microsoft.com/en-us/sql/t-sql/statements/create-fulltext-index-transact-sql – bstory

関連する問題