カテゴリ: Laravel 更新日: 2026/02/13

Laravelでモデルを作成する方法をやさしく解説!php artisan make:model入門

Laravelでモデルを作成する方法(`php artisan make:model`)
Laravelでモデルを作成する方法(`php artisan make:model`)

先生と生徒の会話形式で理解しよう

生徒

「先生、Laravelでデータベースを操作するにはモデルが必要って聞いたんですが、どうやって作るんですか?」

先生

「いい質問ですね。Laravelではコマンドを使って簡単にモデルを作ることができます。そのコマンドがphp artisan make:modelです。」

生徒

「コマンドって難しそうですが、初心者でも使えますか?」

先生

「心配いりません。数文字入力するだけで自動的にファイルが作られるので、誰でも簡単にモデルを作成できますよ。」

生徒

「それなら安心です。実際にどうやって作るのか教えてください!」

先生

「では、Laravelでモデルを作成する基本の流れを説明していきましょう。」

1. モデル(Model)とは?初心者向けにわかりやすく解説

1. モデル(Model)とは?初心者向けにわかりやすく解説
1. モデル(Model)とは?初心者向けにわかりやすく解説

Laravelのモデル(Model)とは、一言でいうと「データベース(データの保管場所)とプログラムをつなぐ橋渡し役」のことです。プログラミング未経験の方には、「Excelの1つのシートを操作するための専用リモコン」とイメージすると分かりやすいでしょう。

通常、データベースを操作するには「SQL」という難しい専用言語を書く必要がありますが、モデルを使えば、普通のプログラミングのように直感的にデータを扱うことができます。これを「Eloquent(エロクアント)ORM」と呼び、Laravelの最大の特徴の一つです。

具体的なイメージ:住所録アプリの場合

例えば、名前や電話番号を保存する「住所録(friendsテーブル)」があるとします。このとき、Laravelでは「Friendモデル」を作成します。

モデルがあることで、以下のような直感的なコードでデータを操作できるようになります。


// SQLを知らなくても、名前が「田中」さんを1人探してくる
$friend = Friend::where('name', '田中')->first();

// その人の電話番号を表示する
echo $friend->tel;

このように、「1つのテーブル(データの表)に対して、1つのモデル(操作用のクラス)」を用意するのがLaravelの基本ルールです。モデルを使いこなすことで、複雑なデータベース操作もシンプルで安全に記述できるようになります。

2. モデルを作成する基本コマンド

2. モデルを作成する基本コマンド
2. モデルを作成する基本コマンド

Laravelでモデルを作成するには、ターミナル(黒い画面の操作ツール)で次のコマンドを入力します。


php artisan make:model User

このコマンドを実行すると、app/Models/User.phpというファイルが自動で作成されます。Userというモデルができたことで、usersテーブルと簡単に連携できるようになります。

3. モデルの中身を確認してみよう

3. モデルの中身を確認してみよう
3. モデルの中身を確認してみよう

作成されたモデルファイルを開いてみると、次のような内容が記述されています。


<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasFactory;
}

ここで重要なのはextends Modelの部分です。これによって、UserクラスはEloquent ORMの機能を引き継いでいます。つまり、このモデルを使えばSQLを直接書かなくてもデータベースを操作できるのです。

4. モデル名とテーブル名の関係

4. モデル名とテーブル名の関係
4. モデル名とテーブル名の関係

Laravelでは、モデル名とテーブル名が自動的に対応するようになっています。

  • Userモデル → usersテーブル
  • Postモデル → postsテーブル
  • Productモデル → productsテーブル

このように、モデルは単数形、テーブルは複数形が基本です。もちろん、もし違う名前で使いたい場合は、モデルの中でテーブル名を指定することもできます。

5. モデル作成時にオプションを使う

5. モデル作成時にオプションを使う
5. モデル作成時にオプションを使う

php artisan make:modelには便利なオプションがあります。よく使うのは次の2つです。

(1)マイグレーションファイルも同時に作成する


php artisan make:model Post -m

-mをつけると、モデルと一緒にマイグレーション(テーブルを作成する設計図ファイル)も作成されます。

(2)コントローラやファクトリも同時に作成する


php artisan make:model Product -mc

-mcをつけると、モデルとコントローラ、さらにマイグレーションもまとめて作成できます。これにより、開発の準備が一気に進められます。

6. 作成したモデルを使ってみよう

6. 作成したモデルを使ってみよう
6. 作成したモデルを使ってみよう

モデルを作成したら、実際に使ってみましょう。例えば、Userモデルを使ってユーザーを新しく登録するコードは次のようになります。


$user = new User();
$user->name = "佐藤花子";
$user->email = "hanako@example.com";
$user->password = bcrypt("password123");
$user->save();

このコードを実行すると、データベースのusersテーブルに新しいデータが追加されます。SQLを一切書かなくても登録ができるのがEloquent ORMの強みです。

7. artisanコマンドを使うメリット

7. artisanコマンドを使うメリット
7. artisanコマンドを使うメリット

php artisan make:modelを使うメリットはたくさんあります。

  • 自動でファイルを作成してくれる → 手作業のミスを防げる
  • 決まった場所に保存される → ファイルの整理が簡単
  • オプションで関連ファイルも一緒に作れる → 作業効率が上がる
  • 初心者でも迷わず使える → 入力するのはたった1行のコマンドだけ

このように、artisanコマンドはLaravel開発に欠かせない便利な道具です。

まとめ

まとめ
まとめ

ここまで、Laravelにおけるモデル(Model)の基本的な役割から、php artisan make:modelコマンドを使った作成方法、そして便利なオプションの使い方までを詳しく解説してきました。Laravelを習得する上で、モデルの理解は避けて通れない非常に重要なステップです。

モデルは単なる「データの入れ物」ではなく、データベースとアプリケーションのロジックを橋渡しするEloquent ORM(エロクアント ORM)という強力な機能を備えています。これにより、複雑なSQLクエリを一行も書くことなく、直感的なPHPのメソッドだけでデータの検索や保存が可能になります。初心者の方が最初につまずきやすいデータベース操作も、モデルを使いこなすことで一気にハードルが下がることでしょう。

Laravelモデル作成の重要ポイントおさらい

今回の内容で特に覚えておきたいポイントを整理しました。

  • 単数形と複数形のルール: モデル名は「User」のように単数形、対応するテーブル名は「users」のように複数形にするのがLaravelの標準的な命名規則です。
  • Artisanコマンドの活用: 手動でファイルを作成するのではなく、必ずコマンドを使って作成しましょう。これにより、正しい名前空間(Namespace)や継承関係が自動的にセットアップされます。
  • オプションの併用: 実務ではモデル単体で作ることは少なく、マイグレーション(-m)やコントローラ(-c)をセットで作ることがほとんどです。

実践的なサンプルコード:データの取得と表示

記事本編ではデータの保存方法を紹介しましたが、ここでは作成したモデルを使ってデータベースから情報を取得する、より実践的なコード例を見てみましょう。例えば、会員一覧を表示するような処理は、モデルを使えばこれほどシンプルに記述できます。


// 全てのユーザーデータを取得する
$users = \App\Models\User::all();

foreach ($users as $user) {
    echo "名前: " . $user->name . "(メール: " . $user->email . ")<br>";
}

// 特定のIDのデータを一件だけ取得する
$targetUser = \App\Models\User::find(1);
if ($targetUser) {
    echo "IDが1のユーザーは " . $targetUser->name . " です。";
}

このように、モデルクラスに対して静的にメソッドを呼び出すだけで、背後ではLaravelが適切なSQLを生成して実行してくれます。

開発を効率化するオプションコマンド一覧

開発現場で頻繁に利用される「よく使うオプションの組み合わせ」をテーブルにまとめました。これらを使い分けるだけで、開発スピードは劇的に向上します。

コマンド例 作成されるファイルの内容
php artisan make:model Task -m モデル + マイグレーション(テーブル設計図)
php artisan make:model Task -c モデル + コントローラ(制御処理)
php artisan make:model Task -mc モデル + マイグレーション + コントローラ
php artisan make:model Task -a 全部入り(モデル、マイグレーション、コントローラ、ファクトリ、シーカー、ポリシー、リソース)

特に「-a」オプション(allの略)は、リソースコントローラを含めたすべての雛形を一括作成してくれるため、本格的な機能を実装する際に非常に重宝します。

モデル設計時に意識すべき「保守性」

最後に、少し踏み込んだ話をすると、モデルを綺麗に保つことは「保守性の高いコード」への第一歩です。Laravelには「Fat Controller, Skinny Model(コントローラを肥大化させず、モデルにビジネスロジックを寄せる)」という考え方もありますが、最近ではさらに細分化する設計も好まれます。まずは基本に忠実に、モデルにデータベース関連の処理を集約させることから始めてみてください。

Laravelのモデル機能をマスターすれば、Webアプリケーション開発の自由度は飛躍的に高まります。まずは自分の作りたい機能に合わせて、小さなモデルを作るところからチャレンジしてみましょう!

先生と生徒の振り返り会話

生徒

「先生、モデルの作り方はバッチリ分かりました!コマンド一発でファイルができるのは本当に気持ちいいですね。でも、作成した後にテーブル名を間違えていたことに気づいたらどうすればいいんですか?」

先生

「いいところに気づきましたね。もしモデル名とテーブル名のルールがずれてしまっても大丈夫ですよ。モデルファイルの中に変数を一つ追加するだけで、紐付けるテーブルを自由に変更できます。」

生徒

「えっ、そうなんですか?どう書けばいいのか教えてください!」

先生

「こんな風に、$tableというプロパティを定義するだけです。見てみましょう。」


namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 明示的にテーブル名を指定する場合
    protected $table = 'my_custom_users_table';
}

生徒

「なるほど!これなら既存のデータベースを操作したい時でも安心ですね。あと、モデルを作った後にカラム(項目の名前)を増やすには、モデルを書き換えるんですか?」

先生

「そこが面白いポイントで、実はモデルファイルにはカラム名は書かなくても動くんです。カラムの追加は、さっき紹介したマイグレーションファイルの方で行います。実行結果を確認してみましょうか。」


INFO  Model [app/Models/Post.php] created successfully.
INFO  Migration [database/migrations/2026_01_30_000000_create_posts_table.php] created successfully.

生徒

「本当だ!-mを付けたら2つファイルができましたね。マイグレーションでテーブルの形を作って、モデルでその中身を操作する……という分担になっているんですね。」

先生

「その通りです!分かってきましたね。モデルは『データベースとの対話担当』だと覚えておけば、これからのLaravel開発がもっと楽しくなりますよ。次は実際にデータを画面に表示するコントローラとの連携に挑戦してみましょう。」

生徒

「はい!モデルを使いこなして、便利なアプリを作れるように頑張ります!」

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティングの基本を完全ガイド!YAML・PHP・アノテーションの違いもわかりやすく解説
New2
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New3
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New4
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.4
Java&Spring記事人気No4
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.5
Java&Spring記事人気No5
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelのrefreshとfreshの違いを初心者でもわかる解説