LaravelのMigration(データベース設計とテーブル作成の基本) – 8/12

前回は Eloquent ORM を使ったデータ操作を解説しました。

  • データ取得(all / find / where)
  • データ保存(save / create)

しかし、そもそも

データベースのテーブルはどう作るのか?

という問題があります。

Laravelではこれを

Migration(マイグレーション)

で管理します。

この記事では次の内容を解説します。

  • Migrationとは
  • テーブル作成
  • カラム定義
  • マイグレーション実行
  • 実務での使い方

Migrationとは

Migrationとは

データベースの構造をコードで管理する仕組み

です。

通常のSQL

CREATE TABLE users (...);

の代わりに、LaravelではPHPでテーブルを定義します。


Migrationのメリット

Migrationを使うメリット

  • テーブル構造をコードで管理できる
  • チームで共有できる
  • バージョン管理できる

つまり

データベースもGit管理できる

ということです。


Migrationファイルの作成

テーブルを作るには次のコマンドを使います。

php artisan make:migration create_users_table

作成される場所

database/migrations/

ファイル名例

2024_01_01_000000_create_users_table.php

Migrationの基本構造

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
};

upメソッド

テーブル作成

を定義します。


downメソッド

元に戻す処理

を定義します。


カラム定義

よく使うカラム


ID

$table->id();

文字列

$table->string('name');

数値

$table->integer('age');

真偽値

$table->boolean('is_active');

日時

$table->timestamps();

マイグレーション実行

php artisan migrate

これでテーブルが作成されます。


実行確認

php artisan migrate:status

ロールバック

元に戻す

php artisan migrate:rollback

全削除

php artisan migrate:reset

再作成

php artisan migrate:refresh

カラム追加

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

php artisan make:migration add_email_to_users_table

Schema::table('users', function (Blueprint $table) {
    $table->string('email');
});

カラム削除

$table->dropColumn('email');

実務での使い方

実務では次の流れで使います。

Migration作成
↓
コード修正
↓
git管理
↓
チームで共有
↓
migrate実行

DB接続設定

.envファイル

DB_CONNECTION=mysql
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

SQLite(簡単)

初心者はSQLiteがおすすめ

touch database/database.sqlite

.env

DB_CONNECTION=sqlite

よくあるエラー


DB接続エラー

SQLSTATE[HY000]

→ .env設定確認


テーブルが存在する

already exists

→ rollback or refresh


MigrationとEloquentの関係

Migration

テーブル構造

Model

データ操作

まとめ

この記事では Migration を解説しました。

重要なポイント

  • Migration = DB構造管理
  • php artisan migrate で実行
  • up / down が重要
  • チーム開発で必須

Migrationを理解すると

データベース設計

ができるようになります。


次の記事

次回は

LaravelのFormとValidation

を解説します。

  • フォーム送信
  • バリデーション
  • 入力チェック

などを説明します。

コメント

タイトルとURLをコピーしました