Laravelにはデーターベース処理のために大きく分けて2つの機能が用意されています。
データベースの作成からの続き
DBクラス:クエリビルダ
クエリビルダ(Query Builder)は、簡単にデーターベースを使いたい時などに便利です。
MVCのM(Model)をわざわざ使わなくても、いくつかのデータの出し入れで済むなら、
Controller(C)やView(V)にそのコードを記述する方が、解りやすいと思える場合
に使います。
オブジェクト指向のメソッドチェーンを使用してデータベースクエリを構築して使います。
戻り値は、PHPフレームワークでよく出てくる、Collectionという型で、
Array(配列)をラップした、機能拡張の型です。
基本操作(データベースとテーブルは作成済みとして)
use Illuminate\Support\Facades\DB;
// レコードの取得
$users = DB::table('users')->get();
// 条件付き取得
$user = DB::table('users')->where('id', 1)->first();
// レコードの挿入
DB::table('users')->insert([
'name' => 'Jane',
'email' => 'jane@example.com',
]);
// レコードの更新
DB::table('users')->where('id', 1)->update(['name' => 'Updated Name']);
// レコードの削除
DB::table('users')->where('id', 1)->delete();
Eloquent:ORM(Object-Relational Mapping)
幾つかのデーターベースの関係性を利用して、データを加工したりするなどの
複雑な操作をする場合など、コードの記述が長くなる。
こういう場合などModel(M)にまとめて記述し、その書き方をある程度の決まり事として
まとめたのがEloquentです。
なので、そのルールに従い、ファイルの名前の記述方法やディレクトリへの配置指定に従えば、
少量のコードの記述でデータベースの操作を行えます。
コードを減らす=抽象化というモダンさを意識しているので、
記述方法のルールを覚える事を要望されますが・・・。
戻り値はモデルオブジェクトで、データをデーターベースのSchemaで使われる
名前と同名のプロパティで扱え、SQL文を作成する必要が無くなります。
通常のデーターベースのテーブルの作成は、カラム名と型を設定しますが、
カラム名はオブジェクトのプロパティと同名で、型はEloquentが変換するので、
データーベースの設定を気にせずプログラミングに専念できます。
ORMとは、データベースとオブジェクト指向をつなぐプログラミング技法です。
モダンをうたっているLaravelなので、当然のごとく取り入れています。
ただし、Laravelに取り込むにあたり、名前をEloquentとしているだけです。
データーベースの操作をより簡単にして、多くの人に活用してもらう事が目的なので、
短いコードを実現するルールをいろいろと決めています。
・データベース操作用のMVCのM(モデル)を作成
php artisan make:model User
基本操作(データベースとテーブルは作成済みとして)
use App\Models\User;
// レコードの取得
$users = User::all();
// レコードの挿入
$user = new User;
$user->name = 'John';
$user->email = 'john@example.com';
$user->save();
// レコードの更新
$user = User::find(1);
$user->name = 'Updated Name';
$user->save();
// レコードの削除
$user = User::find(1);
$user->delete();
結論
DBクラス
・SQL構文に慣れていて、色々と自分の考えで、データベース処理を実現したい。
・SQL構文に不慣れで、できれば簡単にデータベース処理を行いたい。
初心者かある程度の経験者を対象とし、
Laravelの場合は、概ね個人で簡単なアプリケーションを作り、
データーベースの使用も少量のデータの出し入れである場合に便利に使えます。
Eloquent
・とにかくSQL構文を書きたくない!
とにかくPHPでのプログラム構文で、データベースを処理を行いたい場合に
その要望に応えてくれます。時代の流れでは、こちらが主流となりそうです。

