人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravelのマイグレーションでカラムの名前と型を変更する

● Laravelのマイグレーションでカラムの名前と型を変更する

Laravelのマイグレーションでカラムの名前と型を変更するには、
今既にあるマイグレーションファイルは 変更せずに置いておいて、変更を記述したマイグレーションファイルを新規に作成します。

テーブル名 カラム名
artists year_birth_no smallint

 ↓ (例)こちらに変更するとします。

テーブル名 カラム名
artists year_birth_no_name string

●1. 変更用マイグレーションファイルの新規作成

マイグレーションファイル名はなんでもいいです。

php artisan make:migration change_artists_table_column_year_birth_no  --table=artists

成功すると 次のようなファイルが生成されます

2019_07_08_180737_change_artists_table_column_year_birth_no

●2. 変更用マイグレーションファイルの編集

以下のように変更用の命令と戻し用の命令を記述しておきます。

<?php

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

class ChangeArtistsTableColumnYearBirthNo extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // カラム名を変更
        Schema::table('artists', function (Blueprint $table) {
            $table->renameColumn('year_birth_no', 'year_birth_no_name');
        });

        // 型を変更
        Schema::table('artists', function (Blueprint $table) {
            $table->string('year_birth_no_name')->default(NULL)->change();
        });

    }


    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        // 型を戻す
        Schema::table('artists', function (Blueprint $table) {
            $table->smallInteger('year_birth_no_name')->change();
        });

        // カラム名を戻す
        Schema::table('artists', function (Blueprint $table) {
            $table->renameColumn('year_birth_no_name','year_birth_no');
        });
    }

}

●3. 変更用マイグレーションファイルの実行

php artisan migrate

●4. 変更をやっぱり戻す(ロールバック)

php artisan migrate:rollback

関連エントリー

No.1545
07/13 09:45

edit

artisan