すでにDBに作成済みのテーブルに対して、新たにインデックスを作成する場合のやり方です。
マイグレーションファイルを作成
ファイル名やテーブル名(以下のposts
の部分)は適宜変更してください。
php artisan make:migration add_index_to_posts_table --table=posts
マイグレーションファイル編集
->index('xxx')
でインデックスを作成できます。xxxの部分でカラム名を指定します。
public function up()
{
Schema::table('posts', function (Blueprint $table) {
// インデックス追加
$table->index('content');
});
}
public function down()
{
Schema::table('posts', function (Blueprint $table) {
// インデックス削除
$table->dropIndex(['content']);
});
}
インデックス名を指定する
Laravelは自動的にインデックス名を付けてくれますが、インデックス作成メソッドの第2引数で指定も可能です。
$table->index('content', 'content_index_name');
複合インデックスの場合
複合インデックスの場合は、配列でカラム名を指定します。
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->index(['content', 'author_id']);
});
}
public function down()
{
Schema::table('posts', function (Blueprint $table) {
$table->dropIndex(['content', 'author_id']);
});
}
マイグレーション実行
php artisan migrate