前回は 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
を解説します。
- フォーム送信
- バリデーション
- 入力チェック
などを説明します。


コメント