LoginSignup
11
13

More than 3 years have passed since last update.

[Laravel] 特定のマイグレーションだけをマイグレート、ロールバックしたい!!!

Posted at

初めに

入社してから与えられた課題で、特定のマイグレーション以外をロールバックして、修正、特定のマイグレーション以外を再び実行するという操作をしたくなったのですが、なかなか情報が見つからず、たくさんのサイトを見て得た情報と最終的に見つけた自己流の解決策を紹介します。

マイグレーションは連続的なものであるという前提

いざというときにLaravelがデータを安全にロールバックできるようにするための仕組みがマイグレーションというものらしいです。
だから、マイグレーションはそれらが作成された順にひとつずつ実行しています。

この前提から特定のマイグレーションだけを実行することは邪道なのではという疑念を抱きつつ、解決策へ、、、

解決策

特定のマイグレーションだけをマイグレートする

php artisan migrate:refreshを応用して使います。

マイグレーションを指定したファイルから1つだけマイグレートする
php artisan migrate:refresh  --step=1 --path=/database/migrations/ファイル名

step=○の数字を変えることで、マイグレートするファイルの数を変更できます。

特定のマイグレーションだけをロールバックする

コメントアウトを使います。

public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            #$table->increments('id');
            #$table->string('name');
            #$table->string('airline');
            #$table->timestamps();
        });
    }
    public function down()
    {
        #Schema::drop('flights');
    }

ロールバックしたくないファイルを上記のようにコメントアウトし、ロールバックすると、このファイルが無視されます。

11
13
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
11
13