【Laravel】Eloquentってモデルを便利にしている裏方様なのね

もくじ

Eloquentとは

Eloquent ORM(Eloquent Object Relational Mapping)とは、Laravelで提供されているデータ操作の為の機能です。

平たく言うとEloquentとはデータベースとモデルを対応づける機能です。

Eloquentを用いることによって、記述を簡単にすることができます。Eloquentを用いて記述したときの違いを比較してみます。

Eloquentを使う場合と使わない場合

主キーで指定したモデル取得

SELECT * FROM flights WHERE id = 1 LIMIT 1;
App\Flight::find(1);

全件取得

SELECT * FROM flights;
App\Flight::all();

条件にマッチしたモデル取得

SELECT * FROM flights WHERE writer_id = 1;
App\Flight::where('writer_id', 1)->get();

条件にマッチした最初のモデル取得

whereの引数を配列にしてAnd検索ができます。

SELECT * FROM flights WHERE user_id = 1 AND post_id = 1 LIMIT 1;
App\Flight::where([
    'user_id' => 1,
    'post_id' => 1,
])->first();

Eloquentを使用

モデルやコントローラーに記述して使用します。

モデルと対応するデータベーステーブルを作成したら、データベースからデータを取得できるようになります。

artisanコマンドでモデルを作成すると、Eloquentが使えるようにもともと記述があります。

use Illuminate\Database\Eloquent\Model;

モデルの取得

$flights = App\Flight::all();

foreach ($flights as $flight) {
    echo $flight->name;
}

useでショートカットを使用することができます。もしモデル名だけを使ってEloquentを使用する場合は、必ずuseを記述します。

use App\Flight; // 初期ディレクトリの場合
use App\Models\Flight; // Modelsディレクトリがある場合

$flights = Flight::all();

foreach ($flights as $flight) {
    echo $flight->name;
}

まとめ

データベースを扱うアプリをLaravelで製作する上で、Eloquentは非常に便利な機能です。

モデルやコントローラーを記述する際にEloquentが使われているという意識をしなくても問題ありませんが、裏でどのような処理がなされているか知っているとちょっとした応用が利くでしょう。

Eloquentを使ったモデルでの記述方法などは、モデルの記事にて投稿しようと思います。次回の予定。

参考URL

Eloquent:利用の開始 7.x Laravel