migrationの操作(データ型の変更)

2018/10/12

DBの変更についてはXAMPPについているphpMyAdminでもできます。

ただLaravelを使っているならマイグレーション機能を使ったほうが保守の面で便利になります。

今回はDBテーブルのカラムのデータ型をマイグレーション機能を使って変更してみます。

 

やりたいこと

'path'カラムのデータ型を varchar(255) 型からtext型に変更

 

手順

【1】“doctrine/dbal” パッケージをインストール

【2】マイグレーションファイル作成

【3】マイグレーションファイルの編集

【4】 マイグレーション実行

 

【1】“doctrine/dbal” パッケージをインストール

カラム名変更には“doctrine/dbal” パッケージが必要になります。

composerでインストールします。

composer require doctrine/dbal

 

【2】マイグレーションファイル作成

カラムのデータ型を変更するマイグレーションファイルを作成します。

php artisan make:migration change_photos_table --table photos
【解説】
マイグレーションファイルの名前は慣例では以下のようになります。
テーブルの新規作成→create_{テーブル名}_table
テーブルの変更→change_{テーブル名}_table

 

【3】マイグレーションファイルの編集

upメソッドにカラムのデータ型の変更処理を記述します。

: (※省略)
  public function up()
  {
  Schema::table('photos', function (Blueprint $table) {
  //データ型の変更
  $table->text('path')->change();
  });
  }
: (※省略)
【解説】
SchemaファサードのTableメソッドで使用できるカラムのデータ型

データ型 記述
VARCHARカラム $table->string('email');
長さ指定のVARCHARカラム $table->string('name', 100);
TEXTカラム $table->text('description');
INTEGERカラム $table->integer('votes');

Laravel 5.1 データベース:マイグレーション

 
次にdownメソッドには巻き戻す処理を記述します。

(※php artisan rollbackを実行させるとここで記述した内容が反映されます)

: (※省略)
  public function down()
  {
  Schema::table('photos', function (Blueprint $table) {
  //カラム属性の変更
  $table->string('path',255)->change();
  });
  }
: (※省略)

 

【4】マイグレーション実行

以下のコマンドを実行して先ほど編集したマイグレーションを反映させます。

php artisan migrate

これでpathのデータ型がvarchar(255)からtext型に変更されます。

元に戻したいときは以下のコマンドを実行させます。

php artisan migrate:rollback
【解説】
rollbackコマンドを実行させると
マイグレーションファイルのdownメソッドで記述した内容になります。

 
マイグレーションによるデータ型の変更は以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識