Laravel 10days チャレンジ! 8日目 〜Eloquent ORM編〜

Laravel

みなさんこんにちは、ちょいまけです。

今回は「Laravelをゼロから10日でどこまで習得できるのか」という企画の8日目です。

この企画が始まった経緯が知りたい方はコチラをご確認ください。

この記事では、LaravelでEloquent ORMを利用したデータベースへのアクセス方法についてまとめます。よろしければ、お付き合いください。

Eloquent ORMとは

Eloquent ORMとは、Eloquent(エロクアント)という名前のORM(オブジェクトリレーショナルマッピング)です。そしてORMとは、データベースのデータををオブジェクト指向のような形でデータアクセスできるように相互変換してくれる技法のことです。

ORMについての詳しい内容はこちらからどうぞ。

Eloquent ORMはLaravelでデータベースにアクセスするための、DBクラスに代わるもう一つの手段です。DBクラスと比べてどうなのか、実際に使って確かめてみたいと思います。

Eloquent ORMを使ってみる

それではEloquent ORMを使ってみましょう。今回は前回の記事で作ったアプリのデータベースアクセス部分をEloquent ORMを使ったものに置き換えます。アプリの動作自体は前回のものと同じ動作をするように変更します。

モデル作成

Eloquent ORMでは、モデルというタイプのクラスを使ってデータベースにアクセスします。モデルはartisanコマンドで作成可能です。peopleテーブルにアクセスする、Personモデルを以下のコマンドで作成します。

php aritsan make:model Person

コマンドを実行するとappディレクトリ以下にPersonクラスが作られます。これで準備完了です。

データの表示を修正

アプリのデータ表示処理をPersonモデルを利用する形に書き換えます。

public function index(Request $request)
{
    if(isset($request->id))
    {
        // リクエストにパラメータが指定されている場合は、指定のidのデータを取得
        $peoples = Person::find($request->id);
        $peoples = [$peoples];  // viewに配列を渡さないとエラーになるように作ってしまったので、小技を使う
    }
    else
    {
        // peopleテーブルの全データを取得
        $peoples = Person::all();
    }

    // 集計データを全て渡す
    return view('mypage.index', [ 'peoples' => $peoples ]);
}

データの追加を修正

データ追加処理をPersonモデルを利用する形に書き換えます。

public function create(MypageRequest $request)
{
    $person = new Person();
    $person->name = $request->name;
    $person->mail = $request->mail;
    $person->age = $request->age;
    $person->save();

    return redirect('/mypage');
}

データの更新を修正

データ更新処理をPersonモデルを利用する形に書き換えます。

public function update(MypageRequest $request)
{
    $person = Person::find($request->id);
    $person->name = $request->name;
    $person->mail = $request->mail;
    $person->age = $request->age;
    $person->save();

    return redirect('/mypage');
}

データの削除を修正

データ削除処理をPersonモデルを利用する形に書き換えます。

public function del(Request $request)
{
    $people = Person::find($request->id)->first();

    return view('mypage.del', ['id' => $request->id, 'people' => $people]);
}

public function remove(Request $request)
{
    Person::find($request->id)->delete();

    return redirect('/mypage');
}

これで置き換え作業は完了です。

Eloquent ORMを使ってみた感想

元々シンプルなアプリだったので効果は薄いのですが、DBクラスと比べて、いくつか違うと感じる点はありました。まずデータベースアクセスのためのコード量が減ったのは良い点です。慣れればかなり簡単に使えるかなと感じます。

ただ慣れるまでが少し手間なのと、今回は使いませんでしたが、拡張機能の習熟に時間がかかるかなと思います。

さいごに

「Laravel 10days チャレンジ! 8日目 〜Eloquent ORM編〜」いかがだったでしょうか?今回はEloquent ORMを利用したデータベースへのアクセス方法ついて紹介しました。

Eloquent ORMは本当に機能が豊富で、機能の全貌をまとめるのは難しかったので、とりあえず使ってみたという内容で記事にさせていただきました。

これからデータベースアクセスの際、DBクラスとどちらを使うかは悩ましいのですが、ある程度習熟できるまではEloquent ORMを使ってみようかと考えています。

今回は以上です。
最後まで読んでいただきまして、ありがとうございました。

参考

コメント

タイトルとURLをコピーしました