DBのカラムの保守などをする場合のmigrationに関して。
ポツポツ使っていたのですが、しっかりまとめてなかったのでここでまとめて見ようかと思います。
カラム定義
1 |
php aritisan make:migration create_jobs_table |
./database/migrationsの下にyyyy_MM_dd_hhmmss_create_jobs_table.phpが作成されます。
ここに下記の用にカラム定義をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateJobsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('jobs', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('queue')->index(); $table->longText('payload'); $table->unsignedTinyInteger('attempts'); $table->unsignedInteger('reserved_at')->nullable(); $table->unsignedInteger('available_at'); $table->unsignedInteger('created_at'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('jobs'); } } |
実際の実行
1 |
php artisan migrate |
このコマンドで実際にテーブルが作られます。
実際にテーブルが作られており、またmigrationsと言うテーブルにmigrationの記録が作られます。
一回実行すると基本的にはもう終了しています。
もしやり直したい場合は
1 |
php artisan make:rollback --step=1 |
で、戻します。–step=1をつけないと全migration処理がrollbackされます。(この時downと言うメソッドに定義しておかないとうまく動きません。downは通常はupの逆になります。)
もっと原始的な方法としてはmigrationsと言うテーブルで戻したい処理のレコードを物理的に消すと言う方法もあります。こうすると記録が消えますので、migrationsが最初から実行されます。
既存DBからmigrationファイル
ちなみに既存DBからmigrationファイルを作ることもできます。
https://github.com/Xethron/migrations-generator
1 2 |
composer require --dev "xethron/migrations-generator" php artisan migrate:generate |
これだけで一気に既存 DBからのmigrationファイルが作られます。(レガシー系のプロジェクトに良さそうです。)