目次
■新規テーブルの作成時
php artisan make:migration create_テーブル名_table --create=テーブル名
例)php artisan make:migration create_posts_table --create=posts
※「/database/migrations」にマイグレーションファイルが作成されます。
■既存テーブルの更新時
php artisan make:migration ファイル名 --table=テーブル名
例)php artisan make:migration add_userid_to_posts_table --table=posts
■補足:テーブルと一緒にモデル、コントローラも作成するなら以下コマンドが便利です。
php artisan make:model モデル名 -mc
例)php artisan make:model Post -mc
マイグレーションファイルにはupメソッドとdownメソッドがありますが、機能は以下です。
・upメソッド:migration時に実行される
・downメソッド:rollback時に実行される
DBの更新内容はupメソッドに記述します。
また、rollbackできるようにupメソッドでの更新内容と逆の内容をdownメソッドに記述します。
詳細については以下の記事にまとめたので、気になる方はご参照ください。
■テーブル作成
Schema::create('テーブル名', function(Blueprint $table){
~カラムの指定~
}
例)Schema::create('posts'), function(Blueprint $table{
$table->id();
$table->string('title', 100);
$table->text('content');
$table->timestamps();
}
■テーブル削除
Schema::dropIfExists('テーブル名');
例)Schema::dropIfExists('posts');
Schema::table('テーブル名', function (Blueprint $table) {
// カラム追加 ※$table->データ型('カラム名')->after('追加場所の指定');
$table->integer('status')->after('content');
// カラム削除
$table->dropColumn('status');
// カラム名変更 ※$table->renameColumn('変更前', '変更後');
$table->renameColumn('name', 'post_name')
// データ型の変更 ※$table->変更後データ型('対象カラム名')->change();
$table->text('content')->change();
// nullを「許可する」に変更
$table->integer('status')->nullable()->change();
// nullを「許可しない」に変更
$table->integer('status')->nullable(false)->change();
});
データ型 | 内容 |
$table->increments(’カラム名’); | 整数型。オートインクリメント |
$table->integer(‘カラム名’) | 整数型 |
$table->boolean(‘カラム名’) | 真偽値(true,false) |
$table->string(‘カラム名’, 文字数) | 文字数を指定する文字列型 |
$table->text(‘カラム名’) | 文字数を指定しない文字列型 |
$table->json(‘カラム名’) | JSON型 |
以下のような、各カラムのオプションの内よく使うものを表にしています。
$table->integer('note')->nullable(); // ⇐nullを許可する
データ型 | 内容 |
default(‘デフォルト値’); | データ作成時のデフォルト値 |
nullable(true); | nullを許可する |
nullable(false); | nullを許可しない |
■マイグレーション実行
php artisan migrate
■マイグレーションの状態を確認
php artisan migrate:status
ステータスは実行済みなら「Ran」実行してなければ「Pending」と表示されます。
例)
Migration name …………………………… Batch / Status
0001_01_01_000000_create_users_table …… [1] Ran
0001_01_01_000001_create_cache_table …… Pending
■直前のマイグレーションをロールバック
php artisan migrate:rollback
■マイグレーションを全てロールバック
php artisan migrate:reset
■マイグレーションを全てロールバックしてから、再度全てのマイグレーションを実行する
php artisan migrate:refresh
※マイグレーションを使わず手動で作成したテーブルには影響なし。
■全てのテーブルを削除してから、全てのマイグレーションを実行する
php artisan migrate:fresh
※マイグレーションを使わず手動で作成したテーブルがあった場合、削除されてしまいます。
マイグレーションに関しては以上です。