Laravel7 マイグレーション(migration)を使用してカラム名を変更する手順

Laravel7 マイグレーション(migration)を使用してカラム名を変更する手順

Laravel7でマイグレーションを使用してテーブルのカラム名を変更する手順を記述してます。

環境

  • OS windows10 pro 64bit
  • Composer 1.10.5
  • PHP 7.4.5
  • MariaDB 10.4.12
  • Laravel Framework 7.6.2

※windows10に Laravel のインストールはこちら
※windows10に Composer のインストールはこちら
※windows10に PHP のインストールはこちら
※windows10に MariaDB のインストールはこちら

パッケージインストール

Laravel7では、デフォルトではカラム名の変更ができないので、まずはパッケージをインストールします。

composer require doctrine/dbal

変更用マイグレーション作成

カラム名を変更するためのマイグレーションを作成します。

php artisan make:migration change_tasks_table --table tasks

マイグレーション編集

ここではtasksテーブルにある「due_date」というカラムの名称を変更します。

テーブル名カラム名
tasks due_dateDATE

↓変更

テーブル名カラム名
taskscomplete_dateDATE

database\migrations\2020_05_09_085445_change_tasks_table.phpを下記の通りに編集して、カラム名を変更します。
※downには元の名前に戻すためロールバック用のコードを記述してます。

<?php

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

class ChangeTasksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('tasks', function (Blueprint $table) {
            $table->renameColumn('due_date','complete_date')->change();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('tasks', function (Blueprint $table) {
            $table->renameColumn('complete_date','due_date')->change();
        });
    }
}

実行します。

php artisan migrate

DBを確認すると名称が変更されていることが確認できます。

変更前

変更後

型を変更する場合は、下記となります。

Schema::table('tasks', function (Blueprint $table) {
            $table->string('complete_date')->change();
});

型が変更されたことが確認できます。