1. HOME
  2. ブログ
  3. エンジニアリング
  4. Laravelのマイグレーションを徹底解説

BLOG

ブログ

エンジニアリング

Laravelのマイグレーションを徹底解説

はじめに

本記事では、Laravelのマイグレーションとは何かをわかりやすく解説します。

チュートリアルの全体像

本チュートリアルを通じて学べる内容は以下のようになります。

  1. Laravelの開発環境セットアップ
  2. Laravel Breezeで認証機能を導入
  3. Laravelのルーティングを徹底解説
  4. Laravelのコントーラーを徹底解説
  5. Laravelのブレイドを使ってみよう
  6. マイグレーションの仕組みを解説
  7. シーディングを使ってみよう
  8. Eloquentの基本と使い方を徹底解説
  9. 画像アップロードを実装する方法
  10. バリデーションを実装してみよう
  11. Laravelで認可処理を実装しよう

動画で学びたい方はこちらから!

解説

マイグレーションとは?

マイグレーションとは、データベースの構造をバージョン管理できる機能です。

上の図のような3人のチームで開発しているとします。

誰かが実装上の都合でデータベース構造(スキーマと呼ばれます)を変更したくなったとき、マイグレーションファイル を記述します。
このマイグレーションファイルにはデータベースの構造をどうやって変更するかが書かれています。
このマイグレーションファイルを他のチームメンバーに共有して、そのチームメンバーがマイグレーションを実行するためのコマンドを打つだけで、データベース構造が共有できます。

まだチーム開発を経験したことない人ですと、マイグレーションの良さがイマイチぴんと来ないかもしれませんが、絶対に必要になるのでしっかり覚えていきましょう!

実践

ファイル作成

以下のコマンドを実行します。

php artisan make:migration create_posts_table
php artisan make:migration create_comments_table
php artisan make:migration add_columns_to_users_table

database/migrations配下にファイルが作成されます。

./database
    |-- migrations
    |   |-- ...
    |   |-- ...
    |   |-- ...
    |   |-- 2024_08_06_091735_create_posts_table.php
    |   |-- 2024_08_06_092132_create_comments_table.php
    |   `-- 2024_08_06_092816_add_columns_to_users_table.php
    `-- seeders
        `-- ...

新規テーブル追加

XXXX_create_posts_table.php

    public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id');
            $table->string('image_path');
            $table->string('caption');
            $table->timestamps();
            $table->softDeletes();
        });
    }

XXXX_create_comments_table.php

    public function up(): void
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id');
            $table->integer('post_id');
            $table->string('text');
            $table->timestamps();
            $table->softDeletes();
        });
    }

既存テーブルにカラム追加

<?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::table('users', function (Blueprint $table) {
            $table->string('icon')->nullable()->after('email');
            $table->string('description')->nullable()->after('icon');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('icon');
            $table->dropColumn('description');
        });
    }
};

マイグレーションの実行

※現在実行してもエラーが出る状態です。次回の章で修正して実行しますので、今実行する必要はありません。

php artisan migrate

まとめ

次回はシーディングについてです。

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

関連記事