Laravelでモデルを作成する方法をやさしく解説!php artisan make:model入門
生徒
「先生、Laravelでデータベースを操作するにはモデルが必要って聞いたんですが、どうやって作るんですか?」
先生
「いい質問ですね。Laravelではコマンドを使って簡単にモデルを作ることができます。そのコマンドがphp artisan make:modelです。」
生徒
「コマンドって難しそうですが、初心者でも使えますか?」
先生
「心配いりません。数文字入力するだけで自動的にファイルが作られるので、誰でも簡単にモデルを作成できますよ。」
生徒
「それなら安心です。実際にどうやって作るのか教えてください!」
先生
「では、Laravelでモデルを作成する基本の流れを説明していきましょう。」
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. モデルを作成する基本コマンド
Laravelでモデルを作成するには、ターミナル(黒い画面の操作ツール)で次のコマンドを入力します。
php artisan make:model User
このコマンドを実行すると、app/Models/User.phpというファイルが自動で作成されます。Userというモデルができたことで、usersテーブルと簡単に連携できるようになります。
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. モデル名とテーブル名の関係
Laravelでは、モデル名とテーブル名が自動的に対応するようになっています。
Userモデル →usersテーブルPostモデル →postsテーブルProductモデル →productsテーブル
このように、モデルは単数形、テーブルは複数形が基本です。もちろん、もし違う名前で使いたい場合は、モデルの中でテーブル名を指定することもできます。
5. モデル作成時にオプションを使う
php artisan make:modelには便利なオプションがあります。よく使うのは次の2つです。
(1)マイグレーションファイルも同時に作成する
php artisan make:model Post -m
-mをつけると、モデルと一緒にマイグレーション(テーブルを作成する設計図ファイル)も作成されます。
(2)コントローラやファクトリも同時に作成する
php artisan make:model Product -mc
-mcをつけると、モデルとコントローラ、さらにマイグレーションもまとめて作成できます。これにより、開発の準備が一気に進められます。
6. 作成したモデルを使ってみよう
モデルを作成したら、実際に使ってみましょう。例えば、Userモデルを使ってユーザーを新しく登録するコードは次のようになります。
$user = new User();
$user->name = "佐藤花子";
$user->email = "hanako@example.com";
$user->password = bcrypt("password123");
$user->save();
このコードを実行すると、データベースのusersテーブルに新しいデータが追加されます。SQLを一切書かなくても登録ができるのがEloquent ORMの強みです。
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開発がもっと楽しくなりますよ。次は実際にデータを画面に表示するコントローラとの連携に挑戦してみましょう。」
生徒
「はい!モデルを使いこなして、便利なアプリを作れるように頑張ります!」