LoginSignup
31
45

More than 1 year has passed since last update.

laravel migration カラム名変更(初心者向け)

Last updated at Posted at 2020-02-12

phpについての初投稿になります!

リファレンスにも書いてありますが、つい忘れてしまうのでメモ程度に紹介します

laravel 6.x系です
osはmacです

カラム名を変更、削除するには

(※この記事を書いた当時のコマンドです。すぐ下の追記の記事を合わせて読んで参考にしてください。)
ターミナルで

$ composer require doctrine/dbal

↑のコマンドを叩き、composerで"doctrine/dbal"

をインストールしましょう!(リファレンスに書いてあるので臆せずインストールしましょう!)

laravelはデフォルトではカラム名の変更や削除はできません!(なんでやねん!まぁなんか理由があるのでしょう)

※ 2021/07/06追記: 現在上記のコマンドでインストールしてmigrateを実行すると

Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

多分こんなエラーになります。※確かlaravel 8.xでもなった気がする
最新のバージョンがインストールされるとエラーとなってしまうので、

composer require "doctrine/dbal:2.*"

と2系をインストールするとうまくいきます。いくはず。いかなかったら気合いが足りないと思うので、今隣にいる誰かに腹パンしてもらってから再度実行してみてください。
(参考: Laravelのmigrateで「doctrine/dbal」をインストールしても「Class ‘Doctrine\DBAL\Driver\PDOMySql\Driver’ not found」が発生)

で、ターミナルで

$ php artisan make:migration rename_変更前のカラム名_to_変更後のカラム名_on_テーブル名_table --table=テーブル名

とコマンドを叩きます(オプションの"--table=テーブル名"により、migtarionファイル作成時にテーブル名が追加され作成されます。また、migrationファイルの名前は正直適当でいいと思いますが、ファイル名をみて何の内容のmigrationファイルが実行されたかわかりやすい名前をつけた方が後々楽になると思います。)

〇〇_rename_変更前のカラム名_to_変更後のカラム名_on_テーブル名_table.php
<?php

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

class RenameNightSpandingToNightSpendingOnCostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('costs', function (Blueprint $table) {
            $table->renameColumn('night_spanding', 'night_spending');//<-記述
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('costs', function (Blueprint $table) {
            $table->renameColumn('night_spending', 'night_spanding');//<-記述
        });
    }
}

こんな感じでマイグレーションファイルを作成します

upは

$ php artisan migrate

↑で実行される内容

downは

$ php artisan migrate:rollback

↑などで実行される内容を記述します
なので、カラム名の変更や、型の変更などは、基本的にはupで書いた内容の逆を記述すればいいと思います。
(php artisan migrate:refreshなども全てロールバックしてmigrateし直すコマンドなどあるので、downはちゃんと書いておかないとエラーの原因になります!)

で、

$ php artisan migrate

でカラム名を変更することができます!

カラム削除する場合でも、"doctrine/dbal"のインストールが必要みたいですので、個人的にはlaravelプロジェクトを立ち上げたらすぐにインストールしておいた方がいいのかな?と感じてます。

31
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
45