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?

【初心者向け】DBに直接データを入れてた私が「マイグレーション」と「Seeder」に出会った話①

Last updated at Posted at 2025-07-12

はじめに

Laravelを学び始めた頃の私は、データベースといえば「phpMyAdminでポチポチ作る」「手動でINSERT文を書く」というやり方しか知りませんでした。
マイグレーション、Seeder…単語自体聞いたことがない…
というより「テーブルや初期データをコマンドで流せる」という発想自体がありませんでした。
こういう“前提を知らない”状態は、初心者のうちは本当によくあると今でも痛感します。
存在を知らないから調べられない。
そもそも「それができる」という世界が頭の中に存在していない。
この記事は、過去の私のようにMySQLに直接データを入れている方に気付いてもらえたらな、という気持ちで書きました。

マイグレーション

マイグレーションとは、データベースの設計をコードで管理する仕組みです。
テーブルの作成やカラムの追加・変更をコマンド一発で行えるので、とても便利です。
まず初めに、下記コマンドを入力することで database/migrations にマイグレーションファイルが生成されます。
※過去記事で解説したsail環境を使っている方は冒頭の php を全て ./sail にしてください

①テーブルの作成
php artisan make:migration create_テーブル名_table --create=テーブル名
②作成されたファイルの中身を編集
public function up(): void
{
    Schema::create('テーブル名', function (Blueprint $table) {
        $table->id();
        $table->timestamps();
    });
}

上記の通り、デフォルトではidカラムとcreated_at, updated_at の2つのタイムスタンプが入っています。
ここに、作成したいカラムを入れていきます。

# (例)
public function up(): void
{
    Schema::create('テーブル名', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->timestamps();
    });
}
③マイグレーションを実行

作成したいカラムを書き込めたら実行(DBに登録)します。

php artisan migrate

これでテーブルが一つ作れました。
「カラムを1つ書き忘れた!」「やっぱり他にも追加したい!」…よくあることですが、
この場合は次の「既存のテーブルにカラムを追加する場合」をご覧ください。


既存のテーブルにカラムを追加する場合

①カラムの追加
php artisan make:migration add_カラム名_to_テーブル名 --table=テーブル名
②作成されたファイルの中身を編集

先ほど作成したテーブルの「name」の後ろに「birth」というカラムを追加する例です。

# (例)
public function up(): void
{
    Schema::table('テーブル名', function (Blueprint $table) {
            $table->date('birth')->nullable()->after('name');
    });


public function down(): void
{
    Schema::table('テーブル名', function (Blueprint $table) {
        $table->dropColumn('birth');
    });
}

down()とは?
up() が「変更する」なら、
down() は「元に戻す」ための処理を書く場所です。
マイグレーションを取り消す時に使用できるので書いておくと便利です。
使い方は後述します。

③マイグレーションを実行

追加したいカラムを書き込めたら実行(DBに登録)します。

php artisan migrate

これで該当のテーブルにカラムが追加されました。
今度は今作成したテーブルまたはカラムを削除したい方法を記述します。


マイグレーションファイルを削除・やり直す場合

パターンA:作成しただけ ( php artisan migrate未実行 ) の場合

ファイルを削除するだけでOKです。

パターンB:すでにマイグレーション ( php artisan migrate ) を実行した場合

削除用マイグレーションを作ります。

# テーブルを丸ごと削除する場合
php artisan make:migration drop_テーブル名_table --table=テーブル名
# 特定のカラムのみ削除する場合
php artisan make:migration drop_カラム名_from_テーブル名 --table=テーブル名

ファイルの中身を編集します。

# テーブルを丸ごと削除する場合
public function up(): void
{
    Schema::dropIfExists('テーブル名');
}
# 特定のカラムのみ削除する場合
public function up(): void
{
    Schema::table('テーブル名', function (Blueprint $table) {
        $table->dropColumn('カラム名');
    });
}

削除したい内容を書き込めたら実行します。

php artisan migrate
パターンC:最後に実行したマイグレーションだけを元に戻す場合

最後に実行したマイグレーションを取り消す場合に入力してください。
下記を実行すると、直近に実行されたマイグレーションの down() メソッドが実行されて、変更を元に戻すことができます。

php artisan migrate:rollback
パターンD:今まで作成したすべてのマイグレーションを削除し再実行する場合
php artisan migrate:refresh

※中に入っていたデータはすべて削除される点に注意

最後に

本記事ではマイグレーションについて詳しく解説しました。
仮データを登録するための「Seeder」については次の記事でまとめる予定です。

マイグレーションとSeederはセットで使うことが多いので、
Seederの使い方や活用方法についてもぜひそちらをご覧ください。

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?