2020/08/12
"ロールバック" とはDBの更新時に何らかの障害が起こったときに、前の状態にまで戻ることをいいます。
これは実際にDBを構築していてよくあります。
Laravelのマイグレーション機能にもこの "ロールバック" の機能はあります。
今回はロールバックについてのエントリーをします。
マイグレーションテーブル
マイグレーションを実行すると、マイグレーションファイルは「migrations」テーブルに登録されます。
show tables;
「migrations」テーブルを確認は以下のようになっています。
select * from migrations;
ロールバック
ロールバックを実行すると「migratinos」テーブルにあるマイグレーションの操作を一つ手前に戻します。artisanコマンドでロールバックを実行します。
php artisan migrate:rollback
二つ前のマイグレーションファイルに戻りたい場合は php artisan migrate:rollback
を2回実行します。
5.3以降は以下のコマンドが用意されています。
// バッチカラムの4まで戻る場合
php artisan migrate:rollback --step=4
再度、「migrations」テーブルの中身を確認すると一番下にあったマイグレーションが消えていることが確認できます。
このあとの作業としては、ロールバックしたマイグレーションファイルを修正して再度以下のコマンドを実行します。
php artisan migrate
チュートリアル
前回やったチュートリアルの「employees」テーブルの変更を行います。
・「name」カラムの長さを変更(32→50)
・「name」カラムの後に「age」カラムを追加
このあとロールバックで元に戻します。
手順
1)更新用マイグレーションファイルの作成
php artisan make:migration modify_employees_table --table=employees
2)更新用マイグレーションファイルの編集
# database/migrations/xxxx_xx_xx_modify_employees_table.php
public function up()
{
Schema::table('employees', function (Blueprint $table){
// name カラムの長さを32から50に変更します。
$table->string('name', 50)->change();
// nameカラムの後にint型でageカラムを追加。デフォルト値に0を指定。
$table->integer('age')->after('name')->default(0);
});
}
public function down()
{
Schema::table('employees', function (Blueprint $table) {
$table->string('name', 32)->change();
$table->dropColumn('age');
});
}
->after
や ->default
はカラムを追加するときに使用できる修飾子で "カラム修飾子" と呼ばれます。
3)マイグレーションの実行
php artisan migrate
4)テーブルを確認
変更した内容が反映されているか確認
desc employees;
5)ロールバックの実行
php artisan migrate:rollback
6)テーブルの確認
desc employees;
変更をかける前の状態になったことが確認できます。
ロールバックについては以上です。
PHPフレームワーク Laravel入門 第2版
僕がはじめてLaravelを学習するために参考にしたサイトは、掌田津耶乃(しょうだつやの)さんの libro というサイトです。当時(2016年)、Laravel学習サイトの中でもこのサイトは群を抜いてわかりやすく説明されていたので、とても勉強になったのを覚えています。この本は掌田津耶乃さんが書いた本なので、わかりやすく解説されているだろうと kindle で購入しました。2020年8月の時点でいうと日本国内にて唯一の Laravel の良書と言っても良いかと思います。口コミでもLaravel本のロングセラー定番解説書として認知されています。当サイトではチュートリアル形式でLaravelを解説しているので、初心者の方はこの本とセットで学習されるといいと思います。しかし、かなりわかりやすく解説されているとはいえ、PHP中級者以上のスキルは必要です。PHP自体の知識が乏しい方は 独習PHP 第3版 をあわせて購入することをお勧めします。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。