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
マイグレーションファイルの名前は慣例では以下のようになります。
テーブルの新規作成→create_{テーブル名}_table
テーブルの変更→change_{テーブル名}_table
【3】マイグレーションファイルの編集
upメソッドにカラムのデータ型の変更処理を記述します。
: (※省略) 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を実行させるとここで記述した内容が反映されます)
: (※省略) 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メソッドで記述した内容になります。
rollbackコマンドを実行させると
マイグレーションファイルのdownメソッドで記述した内容になります。
マイグレーションによるデータ型の変更は以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。