初心者向け。LaravelでクエリビルダとEloquentの違い
51 回閲覧されました
みなさんこんにちは、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の知識が必要になってくるので訳がわからなくなると思います。