D110 モデル・テーブルの関係とORM

今回はモデルとテーブルの関係についてとORM(Object-relational mapping)について紹介します。ORMとは、オブジェクトとデータベース(リレーショナルデータベース)との対応付けを行うものです。

モデル・テーブルの関係

モデルとはデータベースとやりとりをするためのものであり、各データを格納しているテーブルと関係性のあるものになります。基本的には、テーブルとモデルは1対1の関係であり、Laravelに接続設定しているデータベースのひとつのテーブルにつき、ひとつのモデルを用意します。

テーブル名は下記フォルダ内にアプリケーション内にて用いられているテーブルを明示化しているschemaと呼ばれるファイルを参考に見ることができます。

“database/migrations/ファイル名”

基本的には、こちらに記載されているテーブルと対になったモデルファイルがあります。Lalabelでは、テーブル名は複数形であってもモデルは単数形にて命名するという規則があるので、単数と複数という違いは同一であるとみなして確認をしてみてください。

ORMとは

ORMとは、オブジェクトとデータベース(リレーショナルデータベース)との対応付けを行うものです。イメージとしては、データベースからのデータの取得や保存、取得したデータのオブジェクト化などをSQLを用いずに実装ができるようなものです。LaravelではEloquent(エロクアント)というORMを用いて、データのやりとりを行っております。具体的なデータの処理方法については次の記事にて紹介をいたします。

Eloquentとは

しかし、記載したORMがどのようなSQLを発行しているのかを確認しないままではリスクがあります。ORM自体はコンパクトなコードであっても、実は、不必要なSQLが多く発行されている可能性もあります。いつの間にか処理が重くなっているなどの現象にならないように吐き出しているSQLコードを確認をするようにしましょう。

エンジニアからのアドバイス

抽象的な用語としてイメージを掴むことは難しいかと思いますので、LaravelではEloquentというSQLの代わりになるものを用いてデータベースを扱っているという理解で一旦は良いかと思います。モデルとテーブルの関係性についても命名規則の違いと対になっているという点は覚えておきましょう。

---