モデルの作成とマイグレーション

Laravelの「モデルとEloquent ORM」における「モデルの作成とマイグレーション」について、以下に詳しく説明します。


1. モデルとは

Laravelにおける**モデル(Model)**は、データベースのテーブルと対応するPHPクラスであり、**Eloquent ORM(Object-Relational Mapping)**を通じて、テーブルの行をオブジェクトとして扱えるようにするものです。
Eloquentは、モデルを通じてデータベースとやり取りを行うため、SQLを書くことなく、直感的な文法でCRUD操作(作成、取得、更新、削除)を実現できます。


2. モデルの作成

モデルは、artisanコマンドを使って作成します。

基本構文

go
php artisan make:model モデル名

例:Postモデルを作成する

go
php artisan make:model Post

これにより、app/Models/Post.php に以下のようなクラスが生成されます:

php
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { // 必要に応じてプロパティやリレーションを追加 }

3. モデルとマイグレーションの同時作成

モデル作成時にマイグレーションファイルも同時に生成したい場合は、-mオプションを使います。

go
php artisan make:model Post -m

これにより、以下の2つが作成されます:

  • モデル:app/Models/Post.php

  • マイグレーション:database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php


4. マイグレーションとは

**マイグレーション(Migration)**は、データベースのスキーマ(構造)をバージョン管理できる仕組みです。新しいテーブルの作成、カラムの追加・削除などをPHPコードで記述できます。

マイグレーションファイルの内容例

php
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('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); } };

5. マイグレーションの実行

マイグレーションファイルを適用して、データベースにテーブルを作成するには以下のコマンドを使用します:

nginx
php artisan migrate

これにより、posts テーブルがデータベースに作成されます。


6. モデルとテーブル名の対応

デフォルトでは、モデル名が単数形のとき、その複数形の名前がテーブル名になります。

  • Post モデル → posts テーブル

  • UserProfile モデル → user_profiles テーブル

テーブル名を手動で指定したい場合は、モデル内で $table プロパティを明示的に設定します:

php
protected $table = 'custom_table_name';

まとめ

項目 内容
モデルの役割 テーブルと行をオブジェクトとして扱う
作成コマンド php artisan make:model モデル名
マイグレーションの役割 テーブル構造の定義とバージョン管理
実行コマンド php artisan migrate

ChatGPT4o 生成日:2025/06/23