L

マイグレーションでテーブルを作る

テーブルの設計をコードで管理する「マイグレーション」とは何かを説明し、実際にテーブルを作成・変更する手順を学びます。

広告枠(記事上)— 本番では AdSense 広告が表示されます

前の単元でデータベースに接続できました。次は、データを入れる**テーブル(表)**を作ります。Laravel では、テーブルを手作業ではなく マイグレーション という仕組みで作るのが基本です。

マイグレーションとは

**マイグレーションは「テーブルの設計図をコードで管理する仕組み」**です。

データベースの表を手作業で作ると、「自分のパソコンでは作ったけど、本番サーバーや同僚の環境では作り忘れた」といった食い違いが起きがちです。マイグレーションを使うと、テーブルの作り方をファイルに記録しておき、コマンド1つで誰の環境でも同じ表を再現できます。

「データベース版の作業手順書」だとイメージしてください。手順書を実行すれば、どこでも同じ表ができます。

マイグレーションファイルを作る

ここでは「投稿(posts)」を保存する表を作ってみます。ターミナルで次を実行します。

php artisan make:migration create_posts_table

database/migrations/ の中に、日付つきのファイルが作られます(例: 2026_06_17_000000_create_posts_table.php)。

中身を書く

作られたファイルを開くと、updown の2つのメソッドがあります。

public function up(): void
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
}

public function down(): void
{
    Schema::dropIfExists('posts');
}
  • up() … マイグレーションを実行したときの処理(ここでは posts 表を作る)。
  • down()取り消したときの処理(表を削除する)。

表の列は $table->型('列名') で定義します。

書き方意味
$table->id()自動で増える番号のID列(主キー)
$table->string('title')短い文字列の列(タイトルなど)
$table->text('body')長い文章の列(本文など)
$table->timestamps()作成日時・更新日時の列を自動で2つ追加

実行する:php artisan migrate

設計図を書いたら、実際にデータベースへ反映します。

php artisan migrate

初回はLaravelが最初から用意しているテーブル(users など)も一緒に作られます。SQLite ファイルが無い場合は「作りますか?」と聞かれるので、yes で進めてください。これで posts テーブルが完成です。

やり直したいとき:ロールバック

直前のマイグレーションを取り消す(down() を実行する)には次を使います。

php artisan migrate:rollback

学習中に作り直したいときは、すべてを消して作り直す php artisan migrate:fresh も便利です(保存済みのデータは消えるので注意)。

まとめ

  • マイグレーションは、テーブルの設計をコードで管理し、どこでも同じ表を再現する仕組み。
  • php artisan make:migration create_xxx_table でファイルを作り、up() に表の定義を書く。
  • 列は $table->string('title') のように型と名前で定義する。
  • php artisan migrate で反映、migrate:rollback で取り消し。
  • 次の単元では、作った表にテストデータを自動で入れる方法を学びます。
広告枠(記事下)— 本番では AdSense 広告が表示されます