EC-CUBE3やEC-CUBE4で開発を行なっていると必ず耳にするのがドクトリンやエンティティ、レポジトリといったデータベース周りの用語です。

ECサイトはデータベースと密接に関係しているため、これらを用いずにEC-CUBEの開発を行うことは不可能です。

エンティティとレポジトリとは?

エンティティ:データを保持するためのクラス
レポジトリ:データを操作するためのクラス

あまりフレームワークに詳しくない方に対しては、テーブルをPHPのクラスとして抽象化したものと説明すると何となく伝わるように思います。

レポジトリ

Eccube\Repository\CustomerRepository

テーブル

dtb_customer

エンティティ

Eccube\Entity\Customer

レコード

ID: 1の会員データ

本来データベースのデータを操作するにはSQLを書く必要がありますが、DoctrineによってPHPのクラスとしてデータベースを扱うことができ、SQL文を自力で作る必要がなくなります。

エンティティ・レポジトリと実際のテーブルを紐づけているのが、EC-CUBE3であればdcm.ymlに書かれた定義、EC-CUBE4であればエンティティクラスに記述されたAnnotationです。

アノテーションの例:

どんどんEntityやRepositoryを使って開発を行なってみて見てください。

新規テーブルのたびにEntityやRepositoryクラスを作成するのは面倒ですが、dcm.yml等から自動生成する方法をマスターすると高速な開発が行えるようになりますので別の機会にご紹介します。

関連するカスタマイズ

1サイトから複数のデータベースに接続する方法... 複数のEntityManagerを利用し、複数のデータベースからデータを取得したり更新する方法はないのかというご質問をよくお受けします。 既存サイトとの連携やモールショップ化では頻繁に必要となってくる技術かと思います。 なかなか説明するのは難しいのですが、Doctrineの設定上でア...
データベースの初期化でのインストールエラー ホスト未設定... 今日EC-CUBE4のRC版を再インストールする機会があり、設定値のエラーが起きたため共有いたします。 EC-CUBE4のRC版のインストールページ、データベース初期化で発生したエラーです。 An exception occurred in driver: SQLSTATE php_net...
新しくテーブルを作ってエンティティと関連づける方法... 今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。 この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。 データベースの作成 ドクトリン定義ファイルの作成(dcm....
商品一覧のページネーションに「最初へ」「最後へ」を表示する方法... 商品一覧ページのページネーションはProduct/list.twigを見るとpagination.twigをインクルードすることで表示されています。 pagination.twigをのぞいて見ると「最後へ」の部分は次のようなコードが書かれています。 このリンクを表示するにはconfi...