Laravelのマイグレーションとは
データベースの作成や編集、削除などを管理する方法として、PHPフレームワークのLaravelには「マイグレーション」というものが備わっています。
正しくコードを書くと、だれが、いつ、どういった目的でテーブルの作成・編集・削除を行ったのかがわかる優れものです。
本記事では、基本的なマイグレーションのやり方について書きます。
詳しく知りたい方は、下記の公式ページもご参照ください。
マイグレーションの手順
- マイグレーションファイルの作成
- マイグレーションファイルの編集
- マイグレーションの実行
1. マイグレーションファイルの作成
$ php artisan make:migration create_{テーブル名}_table
コマンドプロンプト(ターミナル)で上記コマンドを実行します。
成功すれば、database/migrationsディレクトリ内にマイグレーションファイルが生成されます。
2. マイグレーションファイルの編集
下記のマイグレーションファイルは、例として{テーブル名}に「posts」を指定したときにできるものです。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
「up」内にはテーブル作成時の処理、「down」内にはテーブル削除時の処理を書きます。
今回は例として、post(投稿)の文章text、画像保存先imageを追記します。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('text');
$table->string('image', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
テーブルカラム作成のデータ型については、下記の記事も参考にしてみてください。
3. マイグレーションの実行
$ php artisan migrate
初回マイグレーションではコマンドプロンプト(ターミナル)で上記コマンドを実行します。これでテーブルの生成完了です!
その他のマイグレーションコマンド
$ php artisan migrate:rollback
直前のマイグレーションをロールバックします。
(基本的に直前マイグレーションの取り消しのように振る舞いますが、実際にはマイグレーションファイルのdown()を実行しています。)
$ php artisan migrate:reset
マイグレーションをすべてロールバックします。
$ php artisan migrate:refresh
マイグレーションをすべてロールバックし、全マイグレーションを実行します。
$ php artisan migrate:fresh
データテーブルをすべて削除し、全マイグレーションを実行します。
$ php artisan migrate:status
各マイグレーションファイルの状態を表示します。