Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
生徒
「Laravelでデータベースから情報を取り出したり、新しいデータを保存したりするにはどうしたらいいですか?」
先生
「LaravelではEloquent ORMという仕組みを使って、データベースをまるでオブジェクトのように扱うことができます。」
生徒
「難しそうですが、具体的にどんなことができるんですか?」
先生
「データを取得・保存・更新・削除といった操作を、とてもシンプルなコードで書けます。では一緒に学んでいきましょう!」
1. Eloquent ORMとは?
LaravelのEloquent ORM(オブジェクトリレーショナルマッパー)は、データベースのテーブルを「モデル」というクラスとして扱える仕組みです。例えば、usersテーブルがあれば、対応するUserモデルを作成することで、SQL文を書かなくてもデータの操作ができます。Laravelのモデルを通してデータを見ることで、「テーブル」ではなく「1人のユーザー」として自然に理解できます。
初心者にとってEloquentが便利なのは、「テーブルの1行=1つのオブジェクト」として扱える点です。行や列の集まりではなく、「ユーザーAさん」「ユーザーBさん」という“個体”として扱えるため、とても直感的です。
// 初心者向け:1件のユーザー情報を取得するサンプル
$user = User::find(1);
echo $user->name;
idが1のユーザーを見つけて、そのユーザーの名前を表示する簡単な例です。
「ORM」とは Object Relational Mapping の略で、プログラムの中で扱うクラス(オブジェクト)と、MySQL や PostgreSQL などのデータベースを結びつける仕組みです。これにより、「ユーザーを探す」「名前を変更する」といった操作を、まるでオブジェクトに話しかけるように書けます。
Excelの表や紙の名簿をイメージするとわかりやすく、Eloquentはその名簿の「1行をそのまま1人のデータ」として扱えるようにしてくれます。SQLの細かい文法を覚える負担が減り、プログラミング初心者でも安心してデータベース操作を開始できます。
2. モデルの準備
まず、Eloquent ORMを使うには「モデル」を用意する必要があります。モデルは、データベースのテーブルと1対1で対応するLaravel側のクラスで、「ユーザーの情報を扱うクラス」「商品を扱うクラス」のように、役割ごとに分けて作成します。Laravelでは、ターミナル(コマンドプロンプト)で次のコマンドを実行するだけでモデルを自動生成できます。
php artisan make:model User
Laravelプロジェクトのフォルダでこのコマンドを実行すると、「User」という名前のモデルクラスが作成されます。
このコマンドを実行すると、通常はapp/Models/User.phpというファイルが作られます。このファイルの中に、Userクラス(モデル)が定義されます。Laravelの決まりごと(規約)により、Userモデルは自動的にusersテーブルと関連付けられます。つまり、「単数形のモデル名」⇔「複数形のテーブル名」というルールで、特別な設定をしなくても、モデルとテーブルがつながる仕組みになっています。
// モデルを使って「1人のユーザー」というイメージを持つ例
$user = new User;
$user->name = '太郎';
$user->email = 'taro@example.com';
この段階では、まだデータベースには保存していませんが、
「太郎さん」というユーザー情報を持ったUserモデルのインスタンスを作ったイメージになります。
このように、モデルを準備すると「テーブルの1行」ではなく「1人のユーザー」としてデータを扱えるようになります。まだSQL文やデータベースの細かい命令を意識する必要はなく、「Userというクラスを使ってユーザー情報を触る」と考えればOKです。実際にデータを保存したり、取得したり、更新・削除したりする具体的なコードは、次の章以降でゆっくり確認していきましょう。
3. データを取得する方法
Laravelのモデルを使えば、SQL文を直接書かなくても、データベースから簡単に情報を取得できます。Eloquent ORMがよしなに動いてくれるので、「全部ほしい」「1件だけほしい」「条件に合うものだけほしい」といった取り方を、わかりやすいコードで書けます。ここでは、Laravel初心者・プログラミング未経験の方でもイメージしやすいように、順番に見ていきましょう。
3-1. 全件取得
$users = User::all();
// 簡単な表示例(名前を一覧表示)
foreach ($users as $user) {
echo $user->name . PHP_EOL;
}
User::all() は、「usersテーブルに入っている全ユーザー情報をまとめて持ってきてね」という命令です。
その結果が $users に配列のような形で入るので、foreach で1件ずつ取り出して名前を表示できます。
「Laravelでユーザー一覧を出したい」「管理画面で全件を確認したい」といったときには、このように all メソッドを使った全件取得が基本になります。難しいSQLのSELECT文を書かなくても、モデルからメソッドを呼ぶだけでデータを取り出せるのが、Eloquent ORM のうれしいところです。
3-2. 特定の1件を取得
// 主キー(id)を使って、1件だけユーザーを取得
$user = User::find(1);
if ($user) {
echo $user->name;
}
User::find(1) は、「id が 1 のユーザーを1件だけ探してきて」という意味になります。
見つかった場合は $user に1件分のユーザー情報が入り、$user->name のようにプロパティへアクセスできます。
findメソッドは、あらかじめ「このidのレコードが見たい」とわかっているときにとても便利です。ログイン中のユーザー情報や、詳細画面で1件だけ表示したいときなどに、Laravelのモデルを使ってスッキリと書けます。もし該当するデータがない場合は null が返ってくるため、上のサンプルのように if 文でチェックしておくと安全です。
3-3. 条件付きで取得
// status が active のユーザーだけを取得
$activeUsers = User::where('status', 'active')->get();
foreach ($activeUsers as $user) {
echo $user->name . PHP_EOL;
}
where('status', 'active') は、「statusカラムが active のものだけに絞り込んで」という条件指定です。
最後に get() を付けることで、「条件に合うユーザーを一覧として取得する」という動きになります。
Laravelの where メソッドを使うと、「有効なユーザーだけ」「特定のメールアドレスだけ」といった細かい絞り込みができます。SQLで言うところの WHERE 句にあたる部分を、Eloquent ORM のメソッドチェーンで書いていくイメージです。最初のうちは、まず「where で条件を決めて get でまとめて取得する」という流れだけ覚えておけば十分です。
このように、Laravelのモデルを使ったデータ取得は、「全件」「1件」「条件付き」という3パターンを押さえておくと、実務でもよく使う基本的な読み取り処理をひと通り書けるようになります。次の章では、取得したデータをどのように保存・更新していくのかを見ていきますが、まずはこの「データの取り出し方」をしっかりイメージできるようにしておきましょう。
4. データを保存する方法
新しくユーザー情報を追加したい場合は、まずモデルのインスタンスを作り、そこに名前やメールアドレスなど必要な値を設定していきます。そのあと save() メソッドを呼ぶことで、データベースに1行のレコードとして書き込まれます。SQL文を覚えていなくても、オブジェクトに値を入れる感覚で保存できるのがEloquentの大きな魅力です。
// 新しいユーザーを登録する簡単な例
$user = new User;
$user->name = '太郎';
$user->email = 'taro@example.com';
$user->status = 'active';
// データベースに保存
$user->save();
Userモデルに情報をセットし、save() を呼び出すと新しいユーザーが登録されます。
プログラミング未経験の方は、「new User」で“空の入れ物”が作られ、そこに名前・メール・ステータスといった情報を順番に入れていくイメージをするとわかりやすいです。そして最後に save() を実行すると、その入れ物の中身がデータベースに1件分のデータとして保存されます。フォーム入力からデータを受け取って登録する時も、この流れが基本となります。
保存処理はLaravelを使う上で頻繁に登場するため、この書き方に慣れておくと後のステップ(更新・削除など)もスムーズに理解できるようになります。次の項目では、保存したデータをどのように変更できるのかを見ていきます。
5. データを更新する方法
すでに存在するデータを変更したい場合は、対象のモデルを取得して更新します。
$user = User::find(1);
$user->name = '花子';
$user->save();
idが1のユーザーの名前が「花子」に更新されます
このようにシンプルな記述でデータを更新できるのがEloquentの魅力です。
6. データを削除する方法
不要になったデータを削除するのも簡単です。
$user = User::find(1);
$user->delete();
idが1のユーザーが削除されます
また、条件に一致する複数のデータを一括で削除することも可能です。
User::where('status', 'inactive')->delete();
statusがinactiveのユーザーを一括削除
7. 初心者がつまずきやすいポイント
LaravelのEloquent ORMは便利ですが、いくつか注意点があります。
- テーブル名とモデル名の対応ルールを理解しておくこと
- モデルを作っただけでは使えず、マイグレーションでテーブルを用意する必要があること
- 保存や更新を忘れずに
save()を呼び出すこと
これらを意識すれば、初心者でもスムーズにデータ操作ができるようになります。
まとめ
LaravelのEloquent ORMを使ったデータ操作は、初心者が最初に覚えておきたい重要な基礎であり、モデルの仕組みを理解することで、データベースを直感的に扱えるようになります。とくに、データを取得・保存・更新・削除する流れはアプリケーション開発の中心となるため、それぞれの処理に込められた意味をしっかり把握しておくことが大切です。Eloquentではモデルを通してテーブルへアクセスできるため、SQLを書かずに安全で読みやすいコードを保てます。たとえば全件取得、条件取得、単一取得など、必要に応じてさまざまな書き方でデータを取り出し、アプリの動きに合わせた柔軟な表示や加工が可能になります。また、新しいデータの保存ではプロパティを設定してsave()を呼び出すだけで登録でき、更新も既存データの取得から値の変更まで簡潔に記述できます。
さらに削除処理もシンプルで、特定の1件だけでなく条件を指定した複数削除にも対応しているため、ユーザー管理や投稿管理などで非常に役立ちます。初心者がつまずきやすいモデルとテーブル名の規約、マイグレーションによるテーブル作成なども、理解が進むほど自然と覚えられる要素です。これらの基本操作を身につけることで、Laravel全体の流れが把握しやすくなり、ビューやコントローラとの役割分担も明確に見えてきます。データの流れを理解しながらEloquentを扱えるようになると、アプリケーション開発が一気に楽しくなり、複雑なシステムでも構造を意識しながら作り進められるようになります。
ここではEloquent ORMの基本が復習できるよう、簡単なサンプルコードを用意しました。モデルの操作がどのようにアプリに役立つかを再確認しながら、自分でコードを書く際の参考にしてください。
{{-- Eloquentでの基本的なデータ操作をまとめたサンプル --}}
<div class="card p-3">
{{-- 取得処理 --}}
@php
$all = App\Models\User::all();
$single = App\Models\User::find(1);
$active = App\Models\User::where('status', 'active')->get();
@endphp
<p class="fw-bold">全件取得:{{ $all->count() }}件</p>
<p class="fw-bold">特定ユーザー:{{ $single->name ?? '未取得' }}</p>
<p class="fw-bold">アクティブ数:{{ $active->count() }}件</p>
{{-- 保存処理の例 --}}
@php
$newUser = new App\Models\User;
$newUser->name = '新規さん';
$newUser->email = 'new@example.com';
$newUser->status = 'active';
// $newUser->save(); 実際の保存はコメントアウト
@endphp
<p>保存準備済みユーザー:{{ $newUser->name }}</p>
{{-- 更新処理 --}}
@php
$editUser = App\Models\User::find(1);
if ($editUser) {
$editUser->name = '更新済みユーザー';
// $editUser->save();
}
@endphp
<p>更新対象ユーザー:{{ $editUser->name ?? 'なし' }}</p>
{{-- 削除処理 --}}
@php
$deleteCandidate = App\Models\User::find(2);
// $deleteCandidate?->delete();
@endphp
<p>削除予定ユーザーID:{{ $deleteCandidate->id ?? '削除対象なし' }}</p>
</div>
Eloquent ORMをしっかり理解すると、モデルとデータベースの結びつきが強まり、アプリケーションの構成全体を俯瞰して考えられるようになります。単純なCRUD操作でも、実践を重ねるうちに「どのタイミングでデータを更新すべきか」「モデルに責任をもたせる書き方とは何か」など、さらに深い設計まで意識できるようになります。こうした積み重ねはLaravelでの開発力を高め、複雑な機能を作る際にも土台となる大切な考え方になります。操作が理解できればできるほどモデルに込められた意図に気づけるようになり、Eloquentがもつ便利さや柔軟性を実感できます。 これから実際にアプリを構築するときは、今回学んだ全件取得、単一取得、条件取得、保存、更新、削除の流れを繰り返し手を動かして確かめてください。理解の深まりとともに、モデルの設計が洗練され、より正確でわかりやすいデータ操作ができるようになります。
生徒:「モデルを使うとSQLを書かずにデータを扱えるって、とても便利なんですね!」
先生:「そうですね。EloquentはLaravelの大きな魅力のひとつで、データ操作をシンプルにしてくれます。」
生徒:「取得や保存の流れも思っていたより簡単で、自分でも書けそうだと感じました。」
先生:「最初は基本のCRUD操作を何度も繰り返すことが大切です。そこから応用がどんどん広がりますよ。」
生徒:「これからはモデルの使い方を意識して、アプリ全体の流れも理解できるようにしたいです!」
先生:「とても良い姿勢ですね。ひとつひとつ積み上げていきましょう。」