Laravelのマイグレーションでカラム名を変更する
やりたいこと
今まではSquelProでポチポチとテーブル作成なり変更を行っていたが、マイグレーションを使ってみた。
作成したテーブルを見ると、あるカラムにtypoが。。。
reflesh
→ refresh
に変えていきたいと思う。
doctrine/dbalの追加
Laravel公式ドキュメントによると
カラムを変更する前に、composer.jsonファイルでdoctrine/dbalを確実に追加してください。Doctrine DBALライブラリーは現在のカラムの状態を決め、指定されたカラムに対する修正を行うSQLクエリを生成するために、使用しています。
とのことなので
$ composer require doctrine/dbal
実行。
doctrine/dbal
が追加されたことを確認。
マイグレーションファイルの作成
次に、Schema変更のために新しいマイグレーションファイルを作成する。
$ php artisan make:migration rename_to_table --table=your_table_name
今回は既存のテーブルに対する変更をかけるため、--table
オプションでテーブル名を指定する必要がある。
するとマイグレーションファイルが作られるので、up
メソッド内とdown
メソッド内に処理を追加する。
変更に際してはrenameColumn
メソッドを使用。
以下のように説明がある。
カラム名を変更するには、renameColumnメソッドをスキーマビルダで使用してください。カラム名を変更する前に、composer.jsonファイルでdoctrine/dbalを依存パッケージとして追加してください。
カラム名変更処理追加
renameColumn
の使い方は、$table->renameColumn("before_column_name", "after_column_name")
。
なので使用例は以下。
public function up() { Schema::table('your_table_name', function (Blueprint $table) { $table->renameColumn("reflesh_token", "refresh_token"); }); } public function down() { Schema::table('your_table_name', function (Blueprint $table) { $table->renameColumn("refresh_token", "reflesh_token"); }); }
down
メソッドでは逆のことをすれば良い。
そしてDBに入ってカラム名が変更されていればOK!