【问题标题】:Using query builder for adding fulltext index in Laravel使用查询构建器在 Laravel 中添加全文索引
【发布时间】:2016-07-10 12:31:44
【问题描述】:

这是在MySQL中添加全文索引的查询:

ALTER TABLE `TableName`
ADD FULLTEXT INDEX `IndexName` (`ColumnName`);

但是如何使用 Laravel 查询生成器添加全文索引?

【问题讨论】:

    标签: php mysql laravel full-text-indexing laravel-query-builder


    【解决方案1】:

    应该这样做:DB::statement

    DB::statement('ALTER TABLE TableName ADD FULLTEXT INDEX IndexName (ColumnName)');

    【讨论】:

      【解决方案2】:

      在 Laravel >= 6.15.0 上,您可以像这样扩展 Illuminate\Database\Schema\Grammars\MySqlGrammarIlluminate\Database\Schema\Blueprint 类(例如,在 AppServiceProviderboot() 方法上):

      use Illuminate\Database\Schema\Blueprint;
      use Illuminate\Database\Schema\Grammars\MySqlGrammar;
      use Illuminate\Support\Fluent;
      
      Blueprint::macro('fulltext', function ($columns, $name = null, $algorithm = null)
      {
          return $this->indexCommand('fulltext', $columns, $name, $algorithm);
      });
      
      Blueprint::macro('dropFulltext', function ($index)
      {
          return $this->dropIndexCommand('dropIndex', 'fulltext', $index);
      });
      
      MySqlGrammar::macro('compileFulltext', function (Blueprint $blueprint, Fluent $command)
      {
          return $this->compileKey($blueprint, $command, 'fulltext');
      });
      

      并像这样在您的迁移中使用它:

      Schema::table('flights', function (Blueprint $table) {
          $table->fulltext(['name', 'airline']);
      });
      
      //reverse the migration
      Schema::table('flights', function (Blueprint $table) {
          $table->dropFulltext(['name', 'airline']);
      });
      

      【讨论】:

        【解决方案3】:

        对于多个Columns/Fields

        DB::statement('ALTER TABLE Database.TableName ADD FULLTEXT fulltext_index (Col_1, col_2, col_3)');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-15
          • 1970-01-01
          • 2018-11-22
          • 2013-02-23
          • 1970-01-01
          • 2013-10-03
          • 2015-01-24
          • 1970-01-01
          相关资源
          最近更新 更多