【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構文の理解が不要不要オブジェクト

fem