マイグレートとロールバック
マイグレーションによるテーブルの作成とロールバックについてみていきます。
マイグレーション
「 php artisan migrate 」コマンドを実行することで、テーブルが作成されるのですがこれと同時にマイグレーションの管理用テーブルも更新されます。
データベースには、マイグレーションファイルで定義したテーブル以外に「 migrations 」テーブルが用意されます。
mysql> show tables;
+---------------------+
| Tables_in_homestead |
+---------------------+
| migrations |
| users |
+---------------------+
2 rows in set (0.00 sec)
テーブルの作成・更新を行うたびに「 migrations 」テーブルに履歴が作成されていきます。
mysql> select * from migrations;
+----+-------------------------------------------------------+-------+
| id | migration | batch |
+----+-------------------------------------------------------+-------+
| 1 | 2018_11_05_180158_create_users_table | 1 |
| 2 | 2018_11_05_215234_add_column_is_active_to_users_table | 1 |
+----+-------------------------------------------------------+-------+
2 rows in set (0.00 sec)
ロールバック
ロールバックを行うには、次のコマンドを実行します。
$ php artisan migrate:rollback
コマンドを実行すると最後に実行したマイグレーションファイルに定義した down(ロールバック処理) が実行され「 migrations 」テーブルのレコードも更新されます。
mysql> select * from migrations;
+----+-------------------------------------------------------+-------+
| id | migration | batch |
+----+-------------------------------------------------------+-------+
| 1 | 2018_11_05_180158_create_users_table | 1 |
+----+-------------------------------------------------------+-------+
2 rows in set (0.00 sec)
複数定義分戻したい場合は、 step オプションをつけ戻したい定義数を指定します。
$ php artisan migrate:rollback --step=3
全てなかったことにしたい場合は、 reset とします。
$ php artisan migrate:reset
他にも migrate:refresh コマンドなどがあります。