マイグレーションでテーブルを作る
テーブルの設計をコードで管理する「マイグレーション」とは何かを説明し、実際にテーブルを作成・変更する手順を学びます。
前の単元でデータベースに接続できました。次は、データを入れる**テーブル(表)**を作ります。Laravel では、テーブルを手作業ではなく マイグレーション という仕組みで作るのが基本です。
マイグレーションとは
**マイグレーションは「テーブルの設計図をコードで管理する仕組み」**です。
データベースの表を手作業で作ると、「自分のパソコンでは作ったけど、本番サーバーや同僚の環境では作り忘れた」といった食い違いが起きがちです。マイグレーションを使うと、テーブルの作り方をファイルに記録しておき、コマンド1つで誰の環境でも同じ表を再現できます。
「データベース版の作業手順書」だとイメージしてください。手順書を実行すれば、どこでも同じ表ができます。
マイグレーションファイルを作る
ここでは「投稿(posts)」を保存する表を作ってみます。ターミナルで次を実行します。
php artisan make:migration create_posts_table
database/migrations/ の中に、日付つきのファイルが作られます(例: 2026_06_17_000000_create_posts_table.php)。
中身を書く
作られたファイルを開くと、up と down の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で取り消し。- 次の単元では、作った表にテストデータを自動で入れる方法を学びます。