1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

migrationファイルのざっくり説明

1
Posted at

1. migrationファイルについて

マイグレーションファイルとは、一言で言えば「データベースの設計図」であり、「DBの変更履歴を管理する」ものです。

2. migrationファイルの作り方

ファイルはすべて、Artisanコマンドを使って自動生成します。

基本のコマンド

php artisan make:migration create_posts_table

これを実行すると、database/migrations/ フォルダの中に 2026_05_28_123456_create_posts_table.php のような「日時+指定した名前」のファイルが自動で作られます。

データを司る「Model(モデル)」と同時に作ることもできます。

php artisan make:model Post -m

末尾に -m をつけるだけで、モデルファイルとマイグレーションファイルを一撃で同時に作ってくれます。

3. migrationファイルの書き方

生成されたファイルを開くと、主に up()down() という2つのメソッド(箱)が用意されています。

  • up():データベースに変更を加えるときの処理(テーブル作成、カラム追加など)
  • down():その変更を元に戻す(ロールバックする)ときの処理(テーブル削除、カラム削除など)

基本的な白紙の状態(例:postsテーブル)

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    // DBに反映するとき(未来へ進む)
    public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();            // 自動連番のID(主キー)
            // 💡 ここに欲しいカラムを書いていく
            $table->timestamps();    // 作成日時(created_at)と更新日時(updated_at)を自動で作る
        });
    }

    // 元に戻すとき(過去に戻る)
    public function down(): void
    {
        Schema::dropIfExists('posts'); // postsテーブルが存在したら消す
    }
};

4. migrationファイルでよくつかう書き方(カラム型と制約)

up() の中に、どのようなデータを書き込みたいかに応じて「型」と「制約(ルール)」を組み合わせて書いていきます。

よく使う「データ型」

$table->string('title');       // 短い文字列(ユーザー名、タイトルなど)
$table->text('content');       // 長い文字列(ブログの本文など)
$table->integer('price');      // 整数(金額、カウントなど)
$table->boolean('is_active');  // true または false(フラグ管理)
$table->date('birthday');      // 日付(YYYY-MM-DD)

よく使う「制約・オプション(修飾子)」

型に続けて矢印 -> で繋いで、カラムにルールを設定できます。

// 空っぽ(NULL)でもOKにする
$table->string('profile_image')->nullable();

// 何も入力されなかったときのデフォルト値を決める
$table->string('status')->default('draft');

// 他のデータと絶対に重複させない(ログイン用メールアドレスなど)
$table->string('email')->unique();

// データベースにメモ(コメント)を残す(実務で超重要!)
$table->integer('role')->comment('1:一般ユーザー, 2:管理者, 3:店舗');

// カラムを追加する場所を「title」の後ろに指定する(既存テーブル変更時)
$table->string('subtitle')->after('title');

5. migrationファイルにおける注意点

down() を絶対にサボらない

「元に戻せること」がマイグレーションの最大の価値です。up() でカラムを追加したら、down() には必ずそれを削除するコード($table->dropColumn('カラム名');)を書きましょう。サボると、ロールバックした時にエラーで詰まります。

② 過去のファイルを直接書き換えない(超重要)

すでにチームに共有したり、本番環境で実行してしまったマイグレーションファイルを後から直接書き換えてはいけません。
変更したいときは、「新しく変更用のマイグレーションファイルを作る」 のが鉄則です。

migrate:fresh の取り扱いは命がけ

php artisan migrate:fresh は「すべてのテーブルを一度完全に削除して、最初から作り直す」コマンドです。開発初期のローカル環境では便利ですが、本番環境で実行すると全ユーザーのデータが吹き飛びます。 本番では絶対に実行しないよう、細心の注意を払ってください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?