マイグレーションを利用したインデックスの操作方法について解説します。
マイグレーションのインデックスの下準備
php artisan make:migration create_games_table
カラムを追加します。
$table->intager('second_id');
マイグレーションのuniqueインデックスの作成方法について
// uniqueの生成
$table->string('email')->unique();
// 名前付きuniqueの生成
$table->string('email')->unique('test_email_unique');
// downは、dropColumnします。
$table->dropColumn('email');
マイグレーションにインデックスを作成する方法について
// indexの生成
$table->string('email')->index();
// 名前付きindexの生成
$table->string('email')->index('test_email_index');
// 複数indexの生成
$table->index(['created_at', 'updated_at']);
マイグレーションのインデックスの名前を変更する方法について
「games_created_at_updated_at_index」が元のカラム名です。
「games_timestamps_index」が新しいカラム名です。
// upに指定します。
$table->renameIndex('games_created_at_updated_at_index', 'games_timestamps_index');
// downは逆を指定します。
$table->renameIndex('games_timestamps_index', 'games_created_at_updated_at_index');
マイグレーションに主キーを設定する方法について
// idに対してprimaryキーを設定する
$table->primary('id');
// idとsecond_idに対して複合primaryキーを設定する
$table->primary(['id', 'second_id']);
マイグレーションのインデックスを削除する方法について
// ■ PKの削除
// pkを削除(up)
$table->dropPrimary('id');
// mysqlでpkを削除したい場合の方法
$table->unsignedInteger('id')->change();
$table->dropPrimary('id');
// pkのロールバック(down)
$table->primary('id');
// ■ indexの削除
// indexの削除(up)
$table->dropIndex('games_timestamps_index');
// indexのロールバック(down)
$table->index(['created_at', 'updated_at']);
// ■ uniqueの削除
// uniqueの削除(up)
$table->dropUnique('test_email_unique');
// uniqueのロールバック(down)
$table->unique('test_email_unique');
MySQLでインデックス名を確認する方法
// MySQL上で下記を実行する(gamesはテーブル名です)
SQL> show index from games;