【PHP】Laravelでテーブルにカラムを追加する方法

こんにちは!CODE CLUB965のKです!

今回は、Laravelで既存のテーブルにカラムを追加する方法を書きたいと思います。

migrationファイルの作成

まずは、migrationファイルを作成します。

以下は、usersテーブルにaddressというカラムを追加したい場合を考えます。
マイグレーションファイルを作成するのに以下のコマンドを叩きます。

php artisan make:migration add_column_address_to_users --table=users

・「add_column_address_to_users」:マイグレーションファイルの名前(任意の名前を指定)
・「--table=users」:カラムを追加するテーブル名を指定

これで、マイグレーションファイルが作成されます。

migrationファイルに記述する

作成されたファイルは以下のようになっています。

class AddColumnAddressToUsers extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
       //
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

簡単に説明すると、

up()には、マイグレーションを実行した際の処理(カラム追加)の記述をします。
down()には、up()の処理でを取り消す処理を記述します(追加したカラムを削除)。

上の例で実際に記述すると以下のようになります。

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddColumnAddressToUsers extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('address')->comment('住所');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('address');
        });
    }
}

up()の中の記述の「$table->string('address')->comment('住所');」の「->comment()」はカラムにコメントしています。(MySQLを使用している場合)
ただこの記述はなくて問題ないです。
個人的に分かりやすいので書いています。

migrationを実行する

以下のコマンドを叩いて実行すればカラムが追加されます。

php artisan migrate

逆にロールバックしたい場合は、

php artisan migrate:rollback

でできます。

最後に

既存のテーブルにカラムを追加したい場合は、今回の手順でやってもらえればできるので参考にしてみて下さい。

基本的にはmigrationファイルにはup()と、down()の両方を記述することを覚えておきましょう!

それでは、また!

Follow me!