2018/10/12
DBの変更についてはXAMPPについているphpMyAdminでもできます。
ただLaravelを使っているならマイグレーション機能を使ったほうが保守の面で便利になります。
今回はDBテーブルのカラムのデータ型をマイグレーション機能を使って変更してみます。
やりたいこと
'path'カラムのデータ型を varchar(255) 型からtext型に変更
手順
【1】“doctrine/dbal” パッケージをインストール
【2】マイグレーションファイル作成
【3】マイグレーションファイルの編集
【4】 マイグレーション実行
【1】“doctrine/dbal” パッケージをインストール
カラム名変更には“doctrine/dbal” パッケージが必要になります。
composerでインストールします。
1 | composer require doctrine /dbal |
【2】マイグレーションファイル作成
カラムのデータ型を変更するマイグレーションファイルを作成します。
1 | php artisan make :migration change_photos_table --table photos |
【解説】
マイグレーションファイルの名前は慣例では以下のようになります。
テーブルの新規作成→create_{テーブル名}_table
テーブルの変更→change_{テーブル名}_table
マイグレーションファイルの名前は慣例では以下のようになります。
テーブルの新規作成→create_{テーブル名}_table
テーブルの変更→change_{テーブル名}_table
【3】マイグレーションファイルの編集
upメソッドにカラムのデータ型の変更処理を記述します。
1 2 3 4 5 6 7 8 9 | : (※省略) public function up() { Schema::table( 'photos' , function (Blueprint $table ) { //データ型の変更 $table ->text( 'path' )->change(); }); } : (※省略) |
【解説】
SchemaファサードのTableメソッドで使用できるカラムのデータ型
SchemaファサードのTableメソッドで使用できるカラムのデータ型
データ型 | 記述 |
---|---|
VARCHARカラム | $table->string('email'); |
長さ指定のVARCHARカラム | $table->string('name', 100); |
TEXTカラム | $table->text('description'); |
INTEGERカラム | $table->integer('votes'); |
次にdownメソッドには巻き戻す処理を記述します。
(※php artisan rollbackを実行させるとここで記述した内容が反映されます)
1 2 3 4 5 6 7 8 9 | : (※省略) public function down() { Schema::table( 'photos' , function (Blueprint $table ) { //カラム属性の変更 $table ->string( 'path' ,255)->change(); }); } : (※省略) |
【4】マイグレーション実行
以下のコマンドを実行して先ほど編集したマイグレーションを反映させます。
1 | php artisan migrate |
これでpathのデータ型がvarchar(255)からtext型に変更されます。
元に戻したいときは以下のコマンドを実行させます。
1 | php artisan migrate:rollback |
【解説】
rollbackコマンドを実行させると
マイグレーションファイルのdownメソッドで記述した内容になります。
rollbackコマンドを実行させると
マイグレーションファイルのdownメソッドで記述した内容になります。
マイグレーションによるデータ型の変更は以上です。

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