カテゴリ: Laravel 更新日: 2025/11/14

Laravelでテーブルを作成・変更・削除するマイグレーションの書き方を解説!初心者でも理解できるデータベース操作

Laravelでテーブルを作成・変更・削除するマイグレーションの書き方
Laravelでテーブルを作成・変更・削除するマイグレーションの書き方

先生と生徒の会話形式で理解しよう

生徒

「Laravelでデータベースにテーブルを作るって、どうやるんですか?」

先生

「Laravelでは『マイグレーション(migration)』という仕組みを使って、テーブルを作ったり、変更したり、削除したりできますよ。」

生徒

「マイグレーションって難しそうですが、どういうものなんですか?」

先生

「心配いりません。マイグレーションは、データベースの“設計図”のようなものなんです。実際にコードで操作できるので、初心者でも慣れれば簡単に使えますよ!」

1. マイグレーションとは?

1. マイグレーションとは?
1. マイグレーションとは?

Laravelのマイグレーション(Migration)とは、データベースのテーブル構造をコードで管理するための仕組みです。 通常、データベースのテーブルを作るときは「phpMyAdmin」などで手動操作を行いますが、LaravelではコマンドとPHPコードで同じことができます。 これにより、チーム開発でも同じテーブル構造を簡単に共有でき、変更履歴も残せるため、とても便利です。

たとえば、家を建てるときの「設計図」を想像してみましょう。 設計図があれば、同じ家をどこでも再現できますよね。マイグレーションも同じで、「設計図(コード)」を使ってテーブルを自由に再現できるのです。

2. テーブルを作成するマイグレーションの基本

2. テーブルを作成するマイグレーションの基本
2. テーブルを作成するマイグレーションの基本

まず、新しいマイグレーションファイルを作成します。ターミナル(コマンドプロンプト)で次のコマンドを実行しましょう。


php artisan make:migration create_users_table

このコマンドを実行すると、database/migrationsフォルダ内に「create_users_table」という名前のマイグレーションファイルが作成されます。

中身は次のような構成になっています。


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

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id(); // 自動でIDカラムを作成
            $table->string('name'); // 名前カラム
            $table->string('email')->unique(); // 重複しないメールアドレス
            $table->timestamps(); // 作成日時と更新日時
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('users');
    }
};

up()メソッドには「テーブルを作る処理」が書かれており、down()メソッドには「取り消す処理(削除)」が書かれています。 Schema::create()の中で$tableを使い、カラム(列)の種類を定義します。

作成したマイグレーションを反映するには、次のコマンドを実行します。


php artisan migrate

これで実際にデータベースに「users」テーブルが作成されます。

3. テーブルを変更するマイグレーション

3. テーブルを変更するマイグレーション
3. テーブルを変更するマイグレーション

既にあるテーブルに新しいカラムを追加したい場合は、次のようにマイグレーションを作成します。


php artisan make:migration add_age_to_users_table --table=users

ファイルが作成されたら、次のようにup()メソッド内に新しいカラムを追加します。


public function up(): void
{
    Schema::table('users', function (Blueprint $table) {
        $table->integer('age')->nullable(); // 年齢カラムを追加
    });
}

変更を反映するには、再びphp artisan migrateを実行します。

ちなみに、カラムを削除したい場合はdropColumn()を使います。


Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('age');
});

4. テーブルを削除するマイグレーション

4. テーブルを削除するマイグレーション
4. テーブルを削除するマイグレーション

テーブル全体を削除するには、Schema::dropIfExists()を使います。 これは「もし存在すれば削除する」という意味で、エラーを避ける安全な方法です。


Schema::dropIfExists('users');

マイグレーションファイル内のdown()メソッドでも同じ処理がよく使われます。 これにより、php artisan migrate:rollbackコマンドで、テーブル作成前の状態に戻すこともできます。

5. よく使うマイグレーション構文まとめ

5. よく使うマイグレーション構文まとめ
5. よく使うマイグレーション構文まとめ

Laravelのマイグレーションで使われる代表的なカラム定義をいくつか紹介します。

  • $table->id();:自動で連番のIDカラムを作成
  • $table->string('title');:文字列カラムを作成(255文字まで)
  • $table->text('body');:長文カラム
  • $table->integer('age');:整数カラム
  • $table->boolean('is_active');:真偽値(true/false)
  • $table->timestamps();:作成日時・更新日時カラム

これらを組み合わせることで、ブログ記事やユーザー情報など、あらゆるテーブルを自由に設計できます。

6. マイグレーションを使うメリット

6. マイグレーションを使うメリット
6. マイグレーションを使うメリット

マイグレーションを使うと、コードでテーブルを管理できるため、手作業でデータベースを編集するよりも安全で確実です。 さらに、チーム開発で複数人が同じ環境を構築するときも、コマンドひとつで同じテーブルを再現できます。

また、履歴管理ができるのも大きな利点です。 たとえば、間違えてテーブルを変更してしまっても、php artisan migrate:rollbackで前の状態に戻せます。 まさに「データベースのタイムマシン」といえる機能です。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)