Php 使用查询生成器在Laravel中添加全文索引
这是在MySQL中添加全文索引的查询:Php 使用查询生成器在Laravel中添加全文索引,php,mysql,laravel,full-text-indexing,laravel-query-builder,Php,Mysql,Laravel,Full Text Indexing,Laravel Query Builder,这是在MySQL中添加全文索引的查询: ALTER TABLE `TableName` ADD FULLTEXT INDEX `IndexName` (`ColumnName`); 但是如何使用Laravel查询生成器添加全文索引呢?应该这样做:DB::statement 语句('ALTER TABLE TableName ADD FULLTEXT IndexName(ColumnName)')用于多个列/字段 DB::statement('ALTER TABLE Database.Table
ALTER TABLE `TableName`
ADD FULLTEXT INDEX `IndexName` (`ColumnName`);
但是如何使用Laravel查询生成器添加全文索引呢?应该这样做:
DB::statement
语句('ALTER TABLE TableName ADD FULLTEXT IndexName(ColumnName)')代码>用于多个
列/字段
DB::statement('ALTER TABLE Database.TableName ADD FULLTEXT fulltext_index (Col_1, col_2, col_3)');
在Laravel>=6.15.0上,您可以像这样扩展
illumb\Database\Schema\Grammars\MySqlGrammar
和illumb\Database\Schema\Blueprint
类(例如AppServiceProvider的boot()
方法):
使用lightlight\Database\Schema\Blueprint;
使用light\Database\Schema\Grammars\MySqlGrammar;
使用light\Support\Fluent;
Blueprint::宏('fulltext',函数($columns,$name=null,$algorithm=null)
{
返回$this->indexCommand('fulltext',$columns,$name,$algorithm);
});
Blueprint::宏('dropFulltext',函数($index)
{
返回$this->dropIndexCommand('dropIndex',fulltext',$index);
});
MySqlGrammar::宏('compileFileLTEXT',函数(Blueprint$Blueprint,Fluent$命令)
{
返回$this->compileKey($blueprint,$command,'fulltext');
});
并在您的迁移中使用它,如下所示:
Schema::table('flights',函数(Blueprint$table){
$table->全文(['name','airline']);
});
//逆转迁移
Schema::table('flights',函数(Blueprint$table){
$table->dropFulltext(['name','airline']);
});