トップページ
Laravel学習サイトLaravelやるばい

目次

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の知識が必要になってくるので訳がわからなくなると思います。

戻る