はじめに
LaravelはPHPのフレームワークで、データベース操作に関してはEloquent、クエリビルダといった方法が提供されています。私自身laravelでコードを書き始めてしばらくの間様々なサイトや先輩方のコードを参考にしてきましたが結局それぞれどう違うのか理解ができていなかったので今回まとめてみようと思います!
Eloquentとは
Eloquentは、データベーステーブルをオブジェクトとして扱う方法です。
モデルとオブジェクト指向 : Eloquentはモデルを使ってデータベーステーブルを操作します。モデルはデータベーステーブルと1対1で対応し、モデルのメソッドを使ってデータを操作できます。
// モデルを使って新しいデータを作成
$user = new User;
$user->name = 'John Doe';
$user->save();
リレーションシップ : Eloquentはテーブル間のリレーションシップ(関連付け)をサポートし、関連データを簡単に取得できます。
// リレーションシップを使ってコメントを取得
$comments = $post->comments;
クエリビルダとは
クエリビルダは、プログラム的にSQLクエリを構築する方法で、柔軟性が高く、SQL文を直接書かなくてもデータベース操作ができます。
動的なクエリ : クエリビルダを使用すると、実行時に条件を追加・変更できます。
// 動的なクエリを生成
$users = DB::table('users')->where('active', 1)->get();
複雑なクエリ : クエリビルダを使って、複雑なSQLクエリもプログラム的に生成できます。JOIN、サブクエリ、グループ化など、SQLの高度な機能を利用できます。
// グループ化されたクエリを生成
$users = DB::table('users')
->select('account_id', DB::raw('count(*) as user_count'))
->groupBy('account_id')
->get();
使い分けに関して
それぞれ戻り値がEloquentはモデルオブジェクト、クエリビルダは戻り値がコレクション型になっています。
Eloquentはオブジェクト指向のアプローチを提供し、リレーションシップを多用する場合に便利な一方、クエリビルダはSQLクエリをプログラム的に制御したい場合や、柔軟な条件を使いたい場合に適しています。
それぞれの特色を理解し適切に使い分けていきたいと思います。