イントロダクション
マイグレーションはデータベースをバージョンコントロールする一手法です。これはデータベーススキーマの修正と現状のスキーマの状態を最新状態に保つことを両立させてくれます。マイグレーションはアプリケーションのスキーマを簡単に管理するためのスキーマ・ビルダーと一緒に使用されるのが典型的です。
マイグレーション生成
make:migration
Artisan
CLIを使い、マイグレーションを生成できます。
php artisan make:migration create_users_table
マイグレーションはdatabase/migrations
フォルダーに設置され、マイグレーションの実行順をフレームワークに知らせるため、名前にタイムスタンプが含まれています。
--table
と--create
オプションもテーブル名、マイグレーションで新しいテーブルを生成するかを指定するために使用できます。
php artisan make:migration add_votes_to_users_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(['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