はじめに
Migrationは新規テーブルの作成、カラム追加など、DBの更新を行うための機能。
今回は使い方をもう一度整理するためにまとめた。
※マイグレーションは①作成②実行の2段階に分けられる
作成は設計図を作る作業でそれを実行(migrate)しないとDBに反映されないので要注意!
ファイルの作成・カラムの追加
$ php artisan make:migration create_{テーブル名}_table //マイグレーションファイル作成
$ php artisan make:migration add_{カラム名}_to_{追加先のテーブル名}_table //カラムの追加
(database/migrations)配下に作成される。
オプション
$ php artisan make:migration create_users_table --create=users
$ php artisan make:migration create_users_table --table=users
--create、--tableのうしろに=でマイグレーションファイルで扱うテーブルの名前を引数として渡
すと、
出来上がるマイグレーションファイルはそのテーブル名を含んで雛形が作られる。
特別な理由がない限り付けておくのが無難か。(雛形と全く違うとか)
Migration 実行
$ php artisan migrate
このコマンドで実際にテーブルが作成される。
これしないと反映されませんからね!
ロールバック
Migrationした時に定義ミスを起こしてしまった時巻き戻しが可能。
# 最後に適用されたマイグレーションをロールバック
$ php artisan migrate:rollback
Migrationは確認することもできる。
ロールバックはやらかしがちなので落ち着いて行おう。
# migrationsテーブルの中身
mysql> SELECT * FROM migrations;
+----+---------------------------------------------------+-------+
| id | migration | batch |
+----+---------------------------------------------------+-------+
| 1 | 2016_12_19_000000_create_tables | 1 |
| 2 | 2018_07_18_102240_add_column_mogumogu | 1 |
| 3 | 2021_02_05_194658_create_hogehoge_table | 2 |
+----+---------------------------------------------------+-------+
$ php artisan migrate:status //こちらのコマンドでも確認できるよ
新たにMigrationしたい時
再度Migtationしたいときは php artisan migrateではだめです
$ php artisan migrate:refresh
$ php artisan migrate:fresh
refreshはマイグレーションファイルの down メソッドを呼び出してテーブルの削除などを行ってからmigrateされます。rollback(巻き戻し)してから再実行する感じ。
freshはdownメソッド呼び出さずに、全テーブルをdropしてからmigrateがされます。
dropてのはまあ削除するってことですね。
しかしrefresh と fresh
これをどう使い分けるのかが調べたが出てこない。。。
基本はfreshを使っているが、わかったら追記する。
分かる方いらっしゃいましたらコメントくださいませ。