【Laravel】マイグレーションの使い方を解説(カラム追加・更新)

こんにちは、フロントエンドエンジニアのてりーです。
僕の詳しいプロフィールはこちら

今回はLaravel(バージョン8~)のmigrationを用いて、以下の処理を解説していきます!

  1. 新規でDBテーブルを作る場合
  2. 既存のDBテーブルにカラムを追加・更新する場合

    Laravelのおすすめ教材

    関連記事

    こんにちは、フロントエンドエンジニアのてりーです。 僕の詳しいプロフィールはこちら ・【未経験向け】独学で実務レベルまでLaravelをマスターするのにおすすめの教材 ・【ジュニアエンジニア向け】Laravelを極めるのにおすすめ[…]

    それでは、見ていきましょう!

    【Laravel】マイグレーションで新規でDBテーブルを作る(php artisan migration)

    まずは新規でDBテーブルを作る場合をおさらいしていきましょう!

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

    新しいテーブルを作成するには、まずはマイグレーションファイルを作成する必要があります。

    php artisan make:migration create_テーブル名_table --create=テーブル名

    上記のコマンドを打つことで、database/migrationsディレクトリに新しいマイグレーションファイルを作成されます。

    ② マイグレーションファイルの編集して、テーブル構造を定義する

    次に先ほどdatabase/migrationsディレクトリに作成されたファイルを編集してテーブル構造を定義していきます!

    具体的な場所としてupメソッド内に書いていきましょう!

    今回はusersテーブルを作成し、以下のカラムを追加しています。

    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

    email_verified_at

    ユーザーのメールアドレスが確認(検証)された日時を記録します。
    ユーザーが登録したメールアドレスに送られたリンクをクリックした際の日時が登録されるアレです!

    メール認証がされてない場合は、nullになります。

    rememberToken

    こちらはLaravelの「ログイン情報を保持する」機能で主に使われます。
    ユーザーが画面にて「ログイン情報を保持する」を選択すると、Laravel側でこのカラムにトークンを生成して保存し、次に画面を開いた際に自動的にユーザーを認識してログイン状態にしてくれます。

    ③ マイグレーションの実行

    こちらのコマンドでマイグレーションが実行され、DBが作成されます。

    php artisan migrate

    マイグレーションのロールバック

    もしマイグレーションの実行を取り消したい場合は、以下のコマンドでロールバックを実行しマイグレーションを取り消す事が出来ます。

    php artisan migrate:rollback

    【Laravel】マイグレーションで既存のDBテーブルに対してカラムを追加・更新する!(php artisan migration)

    次に既存のDBテーブルのカラムを追加・更新する方法を解説していきます。

    1. 更新用のmigrationフォルダを作る
    2. 作成したmigrationフォルダに追加・更新したいカラムの処理を書く
    3. php artisan migrateで反映

    今回は先ほど作ってusersテーブルに対して以下のカラム変更を加えていく例を使って解説します。
    • 電話番号カラムを追加
    • 名前カラムのデータ型を変更

    それでは見ていきましょう!

    ① php artisan migrationで更新用のマイグレーションファイルを作る

    まず、カラムを追加・更新する為の新しいマイグレーションファイルを作成します!
    コマンドの基本形は以下です!

    php artisan make:migration マイグレーションファイル名 --table=既存テーブル名

    既存のテーブルに変更を加える場合は--table=テーブル名で既存のテーブル名を指定します。

    ② マイグレーションファイルに変更したいカラムの処理を書く

    生成されたマイグレーションファイルに対して、以下の処理を加えていきましょう!

    upメソッドに更新さいたい時の処理を、downメソッドにはロールバック時を想定してupメソッドの逆の処理を書いて下さい!

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            // 新しいカラムの追加
            $table->string('phone_number')->nullable();
    
            // 既存のカラムのデータ型変更
            $table->string('name', 255)->change();
        });
    }
    
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            // 追加したカラムの削除
            $table->dropColumn('phone_number');
    
            // 変更したカラムのデータ型を元に戻す
            $table->string('name', 100)->change();
        });
    }

    カラム更新を行うには、doctrine/dbalパッケージがインストールされている必要があります。こちらのコマンドでインストールして下さい。
    doctrine/dbalパッケージのインストールコマンド
    composer require doctrine/dbal

    ③ php artisan migrateでマイグレーションの実行

    最後にphp artisan migrateしましょう。

    php artisan migrate
    

    DBを確認して反映されていたらOKです。

    もしキャリアアップを考えているなら

    関連記事

    こんにちは、フロントエンドエンジニアのてりーです。 僕の詳しいプロフィールはこちら 今回は大学中退してニートだった自分が完全未経験からメガベンチャーに入社した方法について解説していきます。 ・完全未経験から将来的なメガベンチャー転[…]

    関連記事

    こんにちは、フロントエンドエンジニアのてりーです。 「転職ドラフトはハイスペックなエンジニア向けだけ?」と思っていませんか? 実は、技術力に自信がない、あるいは業界経験が浅いエンジニアこそ、転職ドラフトを使うべきなんです。 そ[…]