イントロダクション
マイグレーションはデータベースをバージョンコントロールする一手法です。これはデータベーススキーマの修正と現状のスキーマの状態を最新状態に保つことを両立させてくれます。典型的なマイグレーションはアプリケーションのスキーマを簡単に管理するためのスキーマ・ビルダーと一緒に使用されます。
マイグレーションの生成
make:migration
Artisan
CLIを使い、マイグレーションを生成できます。
php artisan make:migration create_users_table
マイグレーションはdatabase/migrations
フォルダーに設置され、マイグレーションの実行順をフレームワークに知らせるため、名前にタイムスタンプが含まれています。
--table
と--create
オプションもテーブル名、マイグレーションで新しいテーブルを生成するかを指定するために使用できます。
php artisan make:migration add_votes_to_user_table --table=users
php artisan make:migration create_users_table --create=users
マイグレーションの実行
未実行の全マイグレーションを実行する
php artisan migrate
注目:"class not found"エラーがマイグレーション実行時に発生する場合は、
composer dump-autoload
コマンドを実行してみてください。
実働環境でマイグレーションを強制する
いくつかのマイグレーション操作は破壊的です。つまり、データーを失う可能性があります。実働環境のデータベースでこうしたコマンドを実行してしまうことを守るために、コマンドが実行される前に、確認のプロンプトが表示されます。このようにコマンド実行時のプロンプトを出さないためには、--force
フラグを指定してください。
php artisan migrate --force
マイグレーションのロールバック
最後のマイグレーション操作をロールバックする
php artisan migrate:rollback
全マイグレーションをロールバックする
php artisan migrate:reset
全マイグレーションをロールバックし、全部実行し直す
php artisan migrate:refresh
php artisan migrate:refresh --seed
データベース初期値設定
更に初期値設定(seed)クラスを使用し、テストデーターをデーターベースに設定する、シンプルな方法もLaravelには備わっています。全部の初期値設定クラスはdatabase/seeds
に保存されます。初期値設定クラスには好きな名前を付けられます。ですがUserTableSeeder
などのような分かりやすい規則に従ったほうが良いでしょう。デフォルトとして、DatabaseSeeder
クラスが定義されています。このクラスからcall
メソッドを使い、他の初期値設定クラスを呼び出すことで、値を設定する順番をコントロールできます。
データベース初期値設定の例
class DatabaseSeeder extends Seeder {
public function run()
{
$this->call('UserTableSeeder');
$this->command->info('User table seeded!');
}
}
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(array('email' => 'foo@bar.com'));
}
}
データベースに初期データーを設置するには、Artisanコマンドラインツールでdb:seed
コマンドを使ってください。
php artisan db:seed
デフォルトでは、db:seed
コマンドは、他の初期値設定クラスを呼び出しているDatabaseSeeder
クラスを実行します。個別に初期値設定クラスを呼び出したい場合は、--class
オプションを指定して実行することができます。
php artisan db:seed --class=UserTableSeeder
またmigrate:refresh
コマンドを使用し、マイグレーションを全部ロールバックし、再度実行することでも、初期データーを設置できます。
php artisan migrate:refresh --seed