この記事では、Laravelのmigrationを使用してデータベーステーブルに新しいカラムを追加する方法について説明します。
Laravelのmigrationとは
migrationは、データベースのスキーマを管理するための便利ツールです。
migrationファイルを作成することで、データベースのテーブル作成や構造変更をすることができます。
チームでの開発やデータベースのバージョン管理が容易になります。
Laravelのmigrationを使ったカラムの追加方法
新しいカラムをデータベーステーブルに追加するには、まずmigrationファイルを作成する必要があります。
以下のコマンドを使用して、新しいmigrationファイルを生成します。
php artisan make:migration add_{column_name}_to_{table_name}_table --table={table_name}
{column_name}は追加するカラム名、{table_name}は対象のテーブル名を入れます。
php artisan make:migration add_name_to_users_table --table=users
上記コードでは「users」テーブルに「name」カラムを追加するmigrationファイルが作成されます。
「––table」の箇所でカラム追加を意味しています。
ちなみに「––create」とすると、テーブル追加の意味になります。
上記のコマンドを実行すると、「database/migrations」ディレクトリに新しいmigrationファイルが作成されます。
追加のカラム定義
作成されたmigrationファイルのup
メソッド内に、追加のカラムの定義を追加します。
public function up()
{
Schema::table('{table_name}', function (Blueprint $table) {
$table->{column_type}('{column_name}');
// カラム追加
});
}
{table_name}
と{column_name}
を適切なテーブル名とカラム名に置き換え、{column_type}
には新しいカラムのデータ型を指定します。
例えば、新しいカラムのデータ型が文字列の場合は、string
を指定します。
ロールバック処理
その下のdownメソッド内にロールバックの処理を追加します。
public function down()
{
Schema::table('{table_name}', function (Blueprint $table) {
$table->dropColumn('{column_name}');
//カラム削除
});
}
この処理を書くことで間違えてカラム追加した場合などに元に戻すということができるようになります。
migrationの実施
カラムの追加が完了したら、以下のコマンドを使用してmigrationを実行します。
php artisan migrate
migrationが正常に実行されると、新しいカラムが追加されます。
ロールバックの手順
もしカラムの追加に問題が発生した場合、Laravelのmigration機能を使用してロールバックを行うことができます。
php artisan migrate:rollback
上記のコマンドを実行すると、直近のmigrationが取り消されます。
つまり、先ほど追加したカラムが削除されます。
中の処理では、先ほどのdownメソッドが実行されます。
直近より前のロールバックも行いたい場合
直近以前のロールバックも行いたい場合はstepを指定します。
$ php artisan migrate:status
+------+----------------------------------------------------+-------+
| Ran? | Migration | Batch |
+------+----------------------------------------------------+-------+
| Yes | 2021_01_01_000000_create_users_table | 1 |
| Yes | 2021_01_02_000000_add_column_to_users_table | 1 |
| Yes | 2021_01_03_000000_create_posts_table | 2 |
| Yes | 2021_01_04_000000_add_column_to_posts_table | 2 |
+------+----------------------------------------------------+-------+
「php artisan migrate:status」を打つとmigrationの実行状況が確認できます。
右の「Batch」カラムにある数字がmigration実行の順序になっています。
php artisan migrate:rollback --step=2
上記のコマンドを実行すると最新のmigrationからBatch2個分のmigrationをロールバックすることになります。
「Ran?」カラムに「No」が入っているとロールバックが完了し、実行されていないことを意味します。
実際にローカル環境などで試して慣れるのが早いです。
試してみてください。
migrationを使ってカラムを追加しよう
いかがだったでしょうか。
Laravelのmigration機能を使用すると、データベースのカラム追加を簡単に行うことができます。
もしものためのロールバックの流れも把握しておきましょう。
是非、migration機能を活用して効率的な開発を行ってみてください。
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!