Laravel
ORM
クエリビルダ

【Laravel】クエリビルダとORMの違い

Laravelを勉強していたら、クエリビルダとEloquent ORM(LaravelのORM)が出てきて、違いが分からなかったので調べて見た。


クエリビルダとは

SQLのクエリ文を生成するために用意された一連のメソッド。


使い方

productsテーブルのレコードを全件取得する場合

DB::table('products')->get();


ORMとは

データベースとオブジェクトの間の橋渡しをしてくれる仕組みのこと。


使い方

productsテーブルのレコードを全件取得する場合

Product:all();


クエリビルダとORMの違い

クエリビルダとORMが決定的に違うのは「コレクションにまとめられているのは配列などではなく、モデルクラスのインスタンスである」という点、、、らしい。

コレクションとは、配列データを操作するための書きやすく使いやすいラッパーのこと。


実際に見てみる

Laravelに用意されているtinkerを使って結果を見てみた。

クエリビルダの出力結果

スクリーンショット 2018-05-30 15.50.07.png

ORMの出力結果

スクリーンショット 2018-05-30 15.50.17.png

クエリビルダの場合はコレクションの中に連想配列が入っており、ORMの場合はモデルクラスのインスタンスが入っているのがわかる。

てことは、ORMの場合は取得した結果をクラスのインスタンスとして扱うことができるので、DBの構造や連想配列を全く意識しないでゴニョゴニョできて便利。

ORMすごい。。。