LoginSignup
2
1

【Laravel】マイグレーションの作成と実行方法

Posted at

マイグレーションとは

DBのテーブル定義は、phpMyAdminなどから手動で行うこともできますが、マイグレーションファイルという専用のファイルでDBのテーブル定義をPHPコードで管理することで、複数人での開発の時などに全てのPCで手動でテーブル定義を行わなくて済み、設定ミスを防いだり時短になります。

正確にはマイグレーションは、テーブル定義を実行するためのコマンドになります。

マイグレーションファイルの作成

マイグレーションを行うにあたって、まずはファイルを作成します。

今回は、Laravel Sailを使用するのでsailコマンドを使用します。

sail artisan make:migration create_users_table

マイグレーション名はスネークケース(全て小文字で、単語ごとにアンダースコアで繋げる)で指定します。
テーブル名は英単語の複数形を使用します。

コマンド実行後、新たなマイグレーションファイルがdatabase/migrations/の下に作成されているはずです。

作成されたファイルの名前を見てみると、「日付_create_テーブル名_table.php」になっていると思います。この日付は、マイグレーションが実行されるときのタイムスタンプで、古い日時のファイルから先に実行されます。

テーブル作成

ファイルが作成できたら、具体的にテーブルを定義していきます。
作成されたマイグレーションファイルを見てみると、デフォルトでupメソッドdownメソッドが定義されています。

return new class extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

マイグレーションファイルは、デフォルトで必要最小限のコードが記述されています。

マイグレーションのメソッド

  • upメソッド  : テーブルを生成するためのメソッド
  • downメソッド : 作成したテーブルの変更を取り消したり削除するためのメソッド

マイグレーションの実行

マイグレーションファイルを作成、定義しただけではDBには反映されていないので、指定したマイグレーションを実行する下記のコマンドを実行します。

sail artisan migrate

コマンド実行後、確認をしてみるとテーブルが作成されているはずです。
このコマンドではすでに実行済みのものはスキップされ、未実行のものだけが実行されます。

実行履歴の確認

これまでにどのマイグレーションが実行されているかを確認したい場合は、下記のコマンドを実行します。

sail artisan migrate:status
sail artisan migrate:status

+------+------------------------------------------------+-------+
| Ran? | Migration                                      | Batch |
+------+------------------------------------------------+-------+
| Yes  | 2014_10_12_000000_create_users_table           | 1     |
| Yes  | 2014_10_12_100000_create_password_resets_table | 1     |
| Yes  | 2019_08_19_000000_create_failed_jobs_table     | 1     |
| Yes  | 2020_02_05_015307_create_albums_table          | 2     |
| Yes  | 2020_02_05_020352_create_photos_table          | 3     |
+------+------------------------------------------------+-------+

ロールバック

マイグレーションのミスや実行済みのマイグレーションを取り消したい時は、ロールバックを使用します。
例えば、テーブル定義を変更したいときや、いついつまでのテーブルに戻したいときなどに使用することができます。

ロールバック時に実行されるメソッドは、先ほど作成したマイグレーションファイルのdownメソッドです。
マイグレーション時は、upメソッドが実行されるので、upメソッドの内容を打ち消す処理をdownメソッド内に記述します。

downメソッドには、デフォルトでテーブルを削除するためのdropIfExistsという処理が記述されています。
下記のコマンドを実行することでロールバックを実行することができます。

sail artisan migrate:rollback

ロールバックされるマイグレーションは、先ほどsail artisan migrate:statusで確認したBatchの数字が一番大きいもの全てが取り消されます。

  • その他のコマンド 
コマンド 内容
sail artisan migrate:reset 全てのマイグレーションを一括でロールバック
sail artisan migrate:refresh 全てのマイグレーションをロールバックしてからマイグレーションを再実行
sail artisan migrate:fresh 全てのテーブル削除後にマイグレーションして、再実行

参考

Laravel 9.x マイグレーション

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1