ホーム » マイグレーションの利用方法について(インデックス)

マイグレーションの利用方法について(インデックス)

マイグレーションを利用したインデックスの操作方法について解説します。

マイグレーションのインデックスの下準備

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;