Laravelを勉強していたら、クエリビルダとEloquent ORM(LaravelのORM)が出てきて、違いが分からなかったので調べて見た。
#クエリビルダとは
SQLのクエリ文を生成するために用意された一連のメソッド。
##使い方
productsテーブルのレコードを全件取得する場合
DB::table('products')->get();
#ORMとは
データベースとオブジェクトの間の橋渡しをしてくれる仕組みのこと。
##使い方
productsテーブルのレコードを全件取得する場合
Product:all();
#クエリビルダとORMの違い
クエリビルダとORMが決定的に違うのは「コレクションにまとめられているのは配列などではなく、モデルクラスのインスタンスである」という点、、、らしい。
コレクションとは、配列データを操作するための書きやすく使いやすいラッパーのこと。
##実際に見てみる
Laravelに用意されているtinkerを使って結果を見てみた。
クエリビルダの場合はコレクションの中に連想配列が入っており、ORMの場合はモデルクラスのインスタンスが入っているのがわかる。
てことは、ORMの場合は取得した結果をクラスのインスタンスとして扱うことができるので、DBの構造や連想配列を全く意識しないでゴニョゴニョできて便利。
ORMすごい。。。