【Laravel】クエリビルダとEloquentの違いとは?
この記事では、クエリビルダとEloquentの違いについてまとめました。
目次
Eloquentとは
Eloquent
https://readouble.com/laravel/9.x/ja/eloquent.html
EloquentはlaravelのORM(オブジェクトリレーショナルマッパー)です。
二次元の表であるDBのレコードと、PHPのオブジェクトを対応させて、扱いやすくしています。
メリットデメリット
メリットデメリットをまとめました。
メリット
- SQLを理解しないですむ
- 記述量が少なめ
- 加工しやすい
- 宣言が不要
デメリット
- 戻り値がオブジェクトなためクラスの理解が必要
必要な宣言
Eloquentでは、
- 使用するモデル名
を宣言する必要があります。
※ファサードの宣言は不要です。
use App\Models\User;
クエリビルダー
クエリビルダー
https://readouble.com/laravel/9.x/ja/queries.html
クエリビルダーはPHPの書き方でSQLクエリを作成し、実行することができます。
メリットデメリット
メリットデメリットをまとめました。
メリット
- SQLを理解している場合こちらのほうが早くできる
デメリット
- 宣言が必要
- 記述量が多め
- SQLの理解が必要
必要な宣言
クエリビルダーでは、
- 使用するファサード
- 使用するモデル名
を宣言する必要があります。
例:dbファサード
use Illuminate\Support\Facades\DB;
例:model名
use App\Models\User;
結局違いってなに
Eloquentとクエリビルダーの決定的な違いは、戻り値が
- Eloquent…モデルオブジェクト
- クエリビルダー…配列(コレクション)
です。
ほかにも使いやすさ、加工のしやすさの観点からEloquentを使用する人が多いです。
まとめ
クエリビルダとEloquentの違いをまとめてみました。
記述量 | 宣言 | 抽象度 | SQLの知識 | 戻り値 | |
クエリビルダ | 多め | 必要 | 低い*SQL構文の理解が必要 | 必要 | 配列 |
Eloquent | 少な目 | 不要 | 高い*SQL構文の理解が不要 | 不要 | オブジェクト |