カテゴリ: Laravel 更新日: 2025/11/10

LaravelのEloquent活用術まとめ!実務でよく使うテクニック集

LaravelのEloquent活用術まとめ!実務でよく使うテクニック集
LaravelのEloquent活用術まとめ!実務でよく使うテクニック集

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

生徒

「LaravelのEloquentって便利そうだけど、実務でよく使うテクニックってありますか?」

先生

「もちろんです。Eloquentはデータベース操作を簡単にするための便利な機能がたくさんあります。今日は初心者でも使いやすい実務向けのテクニックをまとめて紹介します。」

生徒

「具体的にどんなことができるんですか?」

先生

「リレーションの取得、条件検索、集計、更新や削除、さらに便利なメソッドなどを順番に解説します。」

1. 基本的なレコード取得

1. 基本的なレコード取得
1. 基本的なレコード取得

Eloquentではモデルを通してデータベースのレコードを簡単に取得できます。例えば、Userモデルを使って全てのユーザーを取得する場合です。


$users = User::all();

これだけで全ユーザーの情報を配列のように扱うことができます。条件を付けたい場合はwhereを使います。


$activeUsers = User::where('active', true)->get();

条件に合ったレコードだけを取得できるので、実務で非常によく使います。

2. リレーションを活用する

2. リレーションを活用する
2. リレーションを活用する

Eloquentではモデル同士のリレーションを定義することで、関連するデータを簡単に取得できます。例えば、PostCommentの1対多リレーションです。


$post = Post::find(1);
$comments = $post->comments;

さらに、条件付きでリレーションを検索したい場合はwhereHasを使います。


$posts = Post::whereHas('comments', function($query) {
    $query->where('approved', true);
})->get();

承認済みのコメントがある投稿だけを取得できます。

3. 集計やソートを活用する

3. 集計やソートを活用する
3. 集計やソートを活用する

レコードの件数を数えたり、平均値を取得したりすることも簡単です。


$userCount = User::count();
$averageAge = User::avg('age');
$recentPosts = Post::orderBy('created_at', 'desc')->get();

集計やソートを組み合わせると、実務でのレポート作成などに役立ちます。

4. レコードの更新と削除

4. レコードの更新と削除
4. レコードの更新と削除

取得したレコードはそのまま更新や削除が可能です。


$user = User::find(1);
$user->name = '新しい名前';
$user->save();

User::where('active', false)->delete();

条件を付けて一括削除することもでき、日常のメンテナンス作業でよく使われます。

5. Eager Loadingで効率化

5. Eager Loadingで効率化
5. Eager Loadingで効率化

リレーションを取得する際にN+1問題(データベースへのアクセスが増えすぎる問題)が起こることがあります。これを防ぐにはwithを使ったEager Loadingが有効です。


$posts = Post::with('comments')->get();

これにより、必要なリレーション情報をまとめて取得でき、処理が高速になります。

6. スコープを活用した再利用可能な条件

6. スコープを活用した再利用可能な条件
6. スコープを活用した再利用可能な条件

モデルにスコープを定義すると、よく使う条件を簡単に再利用できます。


class User extends Model {
    public function scopeActive($query) {
        return $query->where('active', true);
    }
}

$activeUsers = User::active()->get();

これで、どこでもactive()を呼ぶだけでアクティブユーザーを取得できます。

7. ソフトデリートで安全に削除

7. ソフトデリートで安全に削除
7. ソフトデリートで安全に削除

削除したレコードを復元できるようにする場合は、ソフトデリートを使います。


use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model {
    use SoftDeletes;
}

$post->delete(); // 論理削除
Post::withTrashed()->get(); // 削除済みも含めて取得
$post->restore(); // 復元

データを誤って消してしまうリスクを減らすことができるため、実務で重宝します。

8. 便利なメソッド活用

8. 便利なメソッド活用
8. 便利なメソッド活用

Eloquentには便利なメソッドが多くあります。例えば、firstOrCreateupdateOrCreateです。


$user = User::firstOrCreate(
    ['email' => 'test@example.com'],
    ['name' => 'テストユーザー']
);

存在しなければ作成し、存在すれば取得するという操作を1行で実現できます。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)