前のページ

LaravelでクエリビルダとEloquentの違い

みなさんこんにちは、あべ いさぢです。


今回はLaravelのクエリビルダとEloquentの違いをざっくりとまとめた記事になります。


違い

下記になります。



クエリビルダとは

SQLよりも楽にDB操作ができるプログラムの書き方です。


生言語でゴリゴリSQLを書いた人にとっては使いやすいはずです。

私もクエリビルダを使いますがEloquentに比べて使いやすいです。


Eloquentとは

クエリビルダよりももっと楽にDB操作ができるプログラムの書き方です。

プログラムを使うのがLaravelからでSQLがよく分かってない人には使いやすいはずです。


またDB操作をする為のコードの記述量が少なく済みます。

デメリットとしてテーブルが複雑に絡むとめちゃくちゃ使いくくなります。


コードの量

具体的にコードを書いてコード量の違いを2つの例で見てみます。

まずはusersテーブルの情報を全権取得します。


クエリビルダで書くと下記になります。

use Illuminate\Support\Facades\DB;      //クエリビルダを使う時は必ず書く

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

Eloquentで書くと下記になります。

use App\Models\User;      //Eloquentを使う時は必ず書く

User::all();

Eloquentの方がコードが短いのが分かると思います。

次はリレーションを使う時を考えます。

クエリビルダで書くと下記になります。

use Illuminate\Support\Facades\DB;

DB::table('users')->join('orders', 'users.id', '=', 'orders.user_id')
           ->where('name', 'John')
           ->get();

どのテーブルが紐づいているかが一目で分かります。

Eloquentで書くと下記になります。

use App\Models\User;

class User {public function orders() {
    return $this->hasMany('App\Models\Names');}}

Eloquentで書くと簡単に書けてコードが短いですが独特の書き方に違和感を感じます。



どちらを使うか

Laravelからプログラムを書く人はコードが短くDB操作ができる断然Eloquentがいいです。



いきなりクエリビルダをやるとSQLの知識が必要になってくるので訳がわからなくなると思います。


戻る