2024.04.29
【Laravel】DB操作(マイグレーション)

Image by G.C. from Pixabay

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

■新規テーブルの作成時

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メソッドと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

※マイグレーションを使わず手動で作成したテーブルがあった場合、削除されてしまいます。

 

マイグレーションに関しては以上です。