【Laravel】元のテーブルのデータを消さずにカラムを追加
Section: Technology

カラムの追加

ソフトウェア開発を行っていると、元の仕様からの変更があり、データベースのテーブルの内容を変更しないといけないことがあります。

その際に Lraravel の開発では、それを行う方法の一つとして、

  1. 既にあるテーブルの migration ファイルにカラムを追加
  2. ロールバックを行う
  3. php artisan migrate

のようにやり直す方法があります。

しかしその方法だと、それまでのテーブルの各行のデータが消えてしまします。

別の方法として、テーブルの元のデータを消さずに、カラムの追加を行うことができます。

これから、postsというテーブルがあり、commentカラムを追加したい場合の例と共に説明していきます。

migration ファイルの作成

まず新しい migration ファイルを作成します。

--tableオプションを用いて、更新するテーブル名を指定します。

php artisan make:migration add_comment_to_posts_table --table=posts

migration ファイルの編集

次に作成した migration ファイルに、追加するカラムの情報を記入していきます。

    public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
+            $table->string('comment')->nullable();
        });
    }

    public function down()
    {
        Schema::table('posts', function (Blueprint $table) {
+           $table->dropColumn('comment');
        });
    }

migrate

最後にmigrateを行い、カラムの変更を反映させます。

php artisan migrate

コマンドを実行すると、追加したカラムが含まれた状態のテーブルになっています。

もちろん元のデータは消えていません。