初心者向け。LaravelでクエリビルダとEloquentの違い

初心者向け。LaravelでクエリビルダとEloquentの違い

52 回閲覧されました

みなさんこんにちは、jonioです。

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

違い

以下になります。

  • クエリビルダ : SQLっぽくDB操作をするからSQLの知識が必要
  • Eloquent : SQLっぽさがなくDB操作をするからはっきり言ってSQLをよく分かってなくても使える。

クエリビルダとは

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

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

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