Laravel MySQL

Fulltext Index in Laravel Migration

Seit Version 5.6 unterstützt MySQL Fulltext Indexe auch in InnoDB Tabellen. 

Alter Table in Migration

Leider unterstützen Laravel Migrationen, diesen Index Typ, wahrscheinlich aus Kompatibilitätsgründen zu anderen DBMS nicht.

Somit bleibt uns nichts anderes übrig, als ein Raw Statement auf die DB zu feuern. 

public function up()
{
    ....
    DB::statement('ALTER TABLE lists ADD FULLTEXT match_key(match_key)');
}

In der down Methode kannst du dann wieder ganz normal, Blueprint benutzen:

public function down()
{
	Schema::table('lists', function(Blueprint $table){
		$table->dropIndex('match_key');
	});
}

Dieser Workaround funktioniert natürlich nur in MySQL, solltest du ein anderes DBMS nutzen, welches auch Fulltext Indexe unterstützt, musst du dein Statement oben dementsprechend anpassen. Und es ist darauf hinzuweisen, das du damit deine Applikation auf ein DBMS festlegst. Solltest du auf Flexibilität angewiesen sein, solltest du eher darüber nachdenken, deine Suchen anderweitig durchzuführen, zum Beispiel mittels Elasticsearch als Middleware (Damit meine ich nicht Laravel Middleware.😉 ). 

Leave a Reply

Your email address will not be published. Required fields are marked *