Laravelでテーブルを作成・変更・削除するマイグレーションの書き方を解説!初心者でも理解できるデータベース操作
生徒
「Laravelでデータベースにテーブルを作るって、どうやるんですか?」
先生
「Laravelでは『マイグレーション(migration)』という仕組みを使って、テーブルを作ったり、変更したり、削除したりできますよ。」
生徒
「マイグレーションって難しそうですが、どういうものなんですか?」
先生
「心配いりません。マイグレーションは、データベースの“設計図”のようなものなんです。実際にコードで操作できるので、初心者でも慣れれば簡単に使えますよ!」
1. マイグレーションとは?
Laravelのマイグレーション(Migration)とは、データベースのテーブル構造をコードで管理するための仕組みです。 通常、データベースのテーブルを作るときは「phpMyAdmin」などで手動操作を行いますが、LaravelではコマンドとPHPコードで同じことができます。 これにより、チーム開発でも同じテーブル構造を簡単に共有でき、変更履歴も残せるため、とても便利です。
たとえば、家を建てるときの「設計図」を想像してみましょう。 設計図があれば、同じ家をどこでも再現できますよね。マイグレーションも同じで、「設計図(コード)」を使ってテーブルを自由に再現できるのです。
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. テーブルを変更するマイグレーション
既にあるテーブルに新しいカラムを追加したい場合は、次のようにマイグレーションを作成します。
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. テーブルを削除するマイグレーション
テーブル全体を削除するには、Schema::dropIfExists()を使います。
これは「もし存在すれば削除する」という意味で、エラーを避ける安全な方法です。
Schema::dropIfExists('users');
マイグレーションファイル内のdown()メソッドでも同じ処理がよく使われます。
これにより、php artisan migrate:rollbackコマンドで、テーブル作成前の状態に戻すこともできます。
5. よく使うマイグレーション構文まとめ
Laravelのマイグレーションで使われる代表的なカラム定義をいくつか紹介します。
$table->id();:自動で連番のIDカラムを作成$table->string('title');:文字列カラムを作成(255文字まで)$table->text('body');:長文カラム$table->integer('age');:整数カラム$table->boolean('is_active');:真偽値(true/false)$table->timestamps();:作成日時・更新日時カラム
これらを組み合わせることで、ブログ記事やユーザー情報など、あらゆるテーブルを自由に設計できます。
6. マイグレーションを使うメリット
マイグレーションを使うと、コードでテーブルを管理できるため、手作業でデータベースを編集するよりも安全で確実です。 さらに、チーム開発で複数人が同じ環境を構築するときも、コマンドひとつで同じテーブルを再現できます。
また、履歴管理ができるのも大きな利点です。
たとえば、間違えてテーブルを変更してしまっても、php artisan migrate:rollbackで前の状態に戻せます。
まさに「データベースのタイムマシン」といえる機能です。